diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-08-22 20:26:18 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-08-22 20:26:18 +0000 |
commit | aa015d66ba28cc836e8b8f5f2c9f66a0a4cb52de (patch) | |
tree | 1b7173479d704b13af525293c3a51c60943fabcc | |
parent | 80b2dc3f647384cce2a498efeb5e5ea85344635f (diff) |
* add support for setting enable-dbus to "warn" in avahi-daemon.conf
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@397 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-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> |