]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nwfilter: Don't fail to start if DBus isn't available
authorPeter Krempa <pkrempa@redhat.com>
Mon, 19 Aug 2013 09:59:54 +0000 (11:59 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 19 Aug 2013 14:31:57 +0000 (16:31 +0200)
When the daemon is compiled with firewalld support but the DBus message
bus isn't started in the system, the initialization of the nwfilter
driver fails even if there are fallback options.

src/nwfilter/nwfilter_driver.c

index 9bb4b4e57c2d0a8f95348673e118d4e5dfe18235..1ed28a2ac229077527f948ff81c26e92d6af3d21 100644 (file)
@@ -175,7 +175,8 @@ nwfilterStateInitialize(bool privileged,
     DBusConnection *sysbus = NULL;
 
 #if WITH_DBUS
-    sysbus = virDBusGetSystemBus();
+    if (virDBusHasSystemBus())
+        sysbus = virDBusGetSystemBus();
 #endif /* WITH_DBUS */
 
     if (VIR_ALLOC(driverState) < 0)
@@ -184,6 +185,7 @@ nwfilterStateInitialize(bool privileged,
     if (virMutexInit(&driverState->lock) < 0)
         goto err_free_driverstate;
 
+    /* remember that we are going to use firewalld */
     driverState->watchingFirewallD = (sysbus != NULL);
     driverState->privileged = privileged;
 
@@ -208,7 +210,8 @@ nwfilterStateInitialize(bool privileged,
      * startup the DBus late so we don't get a reload signal while
      * initializing
      */
-    if (nwfilterDriverInstallDBusMatches(sysbus) < 0) {
+    if (sysbus &&
+        nwfilterDriverInstallDBusMatches(sysbus) < 0) {
         VIR_ERROR(_("DBus matches could not be installed. Disabling nwfilter "
                   "driver"));
         /*
@@ -216,6 +219,8 @@ nwfilterStateInitialize(bool privileged,
          * may have caused the ebiptables driver to use the firewall tool
          * but now that the watches don't work, we just disable the nwfilter
          * driver
+         *
+         * This may only happen if the system bus is available.
          */
         goto error;
     }