From 7567ea478b7235bc19569c8da99a30b56af6473e Mon Sep 17 00:00:00 2001
Message-Id: <7567ea478b7235bc19569c8da99a30b56af6473e.1381871412.git.jdenemar@redhat.com>
From: Peter Krempa <pkrempa@redhat.com>
Date: Mon, 14 Oct 2013 16:45:23 +0100
Subject: [PATCH] nwfilter: Don't fail to start if DBus isn't available
For
https://bugzilla.redhat.com/show_bug.cgi?id=927072
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.
(cherry picked from commit e0e61b4cf75f246b9bc50452a307e1e4d996df4c)
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
src/nwfilter/nwfilter_driver.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index ce75c82..d25c6f2 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -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;
@@ -209,7 +211,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"));
/*
@@ -217,6 +220,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;
}
--
1.8.3.2