summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-22 20:26:18 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-22 20:26:18 +0000
commitaa015d66ba28cc836e8b8f5f2c9f66a0a4cb52de (patch)
tree1b7173479d704b13af525293c3a51c60943fabcc
parent80b2dc3f647384cce2a498efeb5e5ea85344635f (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.c32
-rw-r--r--man/avahi-daemon.conf.5.xml.in12
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>