diff options
-rw-r--r-- | avahi-daemon/main.c | 32 | ||||
-rw-r--r-- | man/avahi-daemon.conf.5.xml.in | 12 |
2 files changed, 35 insertions, 9 deletions
diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index 76b03d0..4c3a069 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -78,7 +78,10 @@ typedef struct { int daemonize; int use_syslog; char *config_file; +#ifdef HAVE_DBUS int enable_dbus; + int fail_on_missing_dbus; +#endif int drop_root; int publish_resolv_conf; char ** publish_dns_servers; @@ -380,8 +383,20 @@ static int load_config_file(DaemonConfig *c) { c->server_config.check_response_ttl = is_yes(p->value); else if (strcasecmp(p->key, "use-iff-running") == 0) c->server_config.use_iff_running = is_yes(p->value); - else if (strcasecmp(p->key, "enable-dbus") == 0) - c->enable_dbus = is_yes(p->value); +#ifdef HAVE_DBUS + else if (strcasecmp(p->key, "enable-dbus") == 0) { + + if (*(p->value) == 'w' || *(p->value) == 'W') { + c->fail_on_missing_dbus = 0; + c->enable_dbus = 1; + } else if (*(p->value) == 'y' || *(p->value) == 'Y') { + c->fail_on_missing_dbus = 1; + c->enable_dbus = 1; + } else + c->enable_dbus = 0; + + } +#endif else if (strcasecmp(p->key, "drop-root") == 0) c->drop_root = is_yes(p->value); else { @@ -587,8 +602,14 @@ static int run_server(DaemonConfig *c) { #ifdef HAVE_DBUS if (c->enable_dbus) - if (dbus_protocol_setup(poll_api) < 0) - goto finish; + if (dbus_protocol_setup(poll_api) < 0) { + + if (c->fail_on_missing_dbus) + goto finish; + + avahi_log_warn("WARNING: Failed to contact D-BUS daemon, disabling D-BUS support."); + c->enable_dbus = 0; + } #endif load_resolv_conf(c); @@ -825,7 +846,10 @@ int main(int argc, char *argv[]) { config.command = DAEMON_RUN; config.daemonize = 0; config.config_file = NULL; +#ifdef HAVE_DBUS config.enable_dbus = 1; + config.fail_on_missing_dbus = 1; +#endif config.drop_root = 1; config.publish_dns_servers = NULL; config.publish_resolv_conf = 0; diff --git a/man/avahi-daemon.conf.5.xml.in b/man/avahi-daemon.conf.5.xml.in index cac0717..9d13ce5 100644 --- a/man/avahi-daemon.conf.5.xml.in +++ b/man/avahi-daemon.conf.5.xml.in @@ -83,11 +83,13 @@ </option> <option> - <p><opt>enable-dbus=</opt> Takes a boolean value ("yes" or - "no"). If set to "yes" avahi-daemon connects to DBUS, to offer - an object oriented client API. Only available if avahi has - been compiled with <opt>--enable-dbus</opt> in which case it - defaults to "yes".</p> + <p><opt>enable-dbus=</opt> Takes either "yes", "no" or + "warn". If set to "yes" avahi-daemon connects to D-BUS, + offering an object oriented client API. It is only available + if avahi has been compiled with <opt>--enable-dbus</opt> in + which case it defaults to "yes". "warn" behaves like "yes", + but the daemon starts up even when it fails to connect to a + D-BUS daemon.</p> </option> </section> |