]> xenbits.xensource.com Git - libvirt.git/commitdiff
Avoid squashing errors during network startup cleanup path
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 26 Oct 2010 10:17:25 +0000 (11:17 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 26 Oct 2010 15:05:09 +0000 (16:05 +0100)
When failing to start a virtual network, we have to cleanup,
tearing down any iptables rules. If the iptables rules were
not present yet though, this raises an error, which squashes
the original error we were handling.

* src/network/bridge_driver.c: When failing to start a virtual
  network, don't squash the original error in cleanup

src/network/bridge_driver.c

index 87217473ed07081c8c1f444f3b55550661fb5afb..0777d850294c89121c5d29a3e561265fe07850c9 100644 (file)
@@ -1171,6 +1171,7 @@ static int networkStartNetworkDaemon(struct network_driver *driver,
                                      virNetworkObjPtr network)
 {
     int err;
+    virErrorPtr save_err;
 
     if (virNetworkObjIsActive(network)) {
         networkReportError(VIR_ERR_INTERNAL_ERROR,
@@ -1255,7 +1256,12 @@ static int networkStartNetworkDaemon(struct network_driver *driver,
     }
 
  err_delbr2:
+    save_err = virSaveLastError();
     networkRemoveIptablesRules(driver, network);
+    if (save_err) {
+        virSetError(save_err);
+        virFreeError(save_err);
+    }
 
  err_delbr1:
     if ((err = brSetInterfaceUp(driver->brctl, network->def->bridge, 0))) {