X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=sidebyside;f=avahi-daemon%2Fmain.c;h=566a276d599355d4b23324b142fc6e01ac1c0ce4;hb=a9566d5dcac080d7fa91546823277c57a5d09a5f;hp=76b03d0a599038947d0e2a87a2bd1a8c1bf3ce86;hpb=af548e38c2c282132ddac2a75a76218ff3be3175;p=catta diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index 76b03d0..566a276 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -79,6 +79,7 @@ typedef struct { int use_syslog; char *config_file; int enable_dbus; + int fail_on_missing_dbus; int drop_root; int publish_resolv_conf; char ** publish_dns_servers; @@ -219,7 +220,7 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda #endif if (state == AVAHI_SERVER_RUNNING) { - avahi_log_info("Server startup complete. Host name is <%s>", avahi_server_get_host_name_fqdn(s)); + avahi_log_info("Server startup complete. Host name is %s.", avahi_server_get_host_name_fqdn(s)); static_service_add_to_server(); remove_dns_server_entry_groups(); @@ -380,8 +381,18 @@ 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); + 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; + } + } else if (strcasecmp(p->key, "drop-root") == 0) c->drop_root = is_yes(p->value); else { @@ -584,12 +595,21 @@ static int run_server(DaemonConfig *c) { if (simple_protocol_setup(poll_api) < 0) goto finish; - + if (c->enable_dbus) { #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; + } +#else + avahi_log_warn("WARNING: We are configured to enable D-BUS but it was not compiled in."); + c->enable_dbus = 0; #endif + } load_resolv_conf(c); static_service_load(); @@ -825,7 +845,13 @@ 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; +#else + config.enable_dbus = 0; + config.fail_on_missing_dbus = 0; +#endif config.drop_root = 1; config.publish_dns_servers = NULL; config.publish_resolv_conf = 0;