X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-daemon%2Fdbus-protocol.c;h=3259355e5c27846a951307808111fe3dedc54b6b;hb=f6208e2b347866df4b9a411e15eb0329afb07655;hp=dbf30f898db225071392d591bf6f84b68f42a9ee;hpb=2a3d0eaa15047ec792cddc1e7e821f525d718648;p=catta diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c index dbf30f8..3259355 100644 --- a/avahi-daemon/dbus-protocol.c +++ b/avahi-daemon/dbus-protocol.c @@ -189,7 +189,7 @@ static DBusHandlerResult msg_signal_filter_impl(AVAHI_GCC_UNUSED DBusConnection struct timeval tv; if (server->reconnect) { - avahi_log_warn("Disconnnected from D-Bus, trying to reconnect in %ims...", RECONNECT_MSEC); + avahi_log_warn("Disconnected from D-Bus, trying to reconnect in %ims...", RECONNECT_MSEC); dbus_disconnect(); @@ -200,7 +200,7 @@ static DBusHandlerResult msg_signal_filter_impl(AVAHI_GCC_UNUSED DBusConnection else server->reconnect_timeout = server->poll_api->timeout_new(server->poll_api, &tv, reconnect_callback, NULL); } else { - avahi_log_warn("Disconnnected from D-Bus, exiting."); + avahi_log_warn("Disconnected from D-Bus, exiting."); raise(SIGQUIT); } @@ -1051,12 +1051,34 @@ static int dbus_connect(void) { assert(!server->bus); dbus_error_init(&error); - - if (!(server->bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) { + +#ifdef HAVE_DBUS_BUS_GET_PRIVATE + if (!(server->bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error))) { assert(dbus_error_is_set(&error)); - avahi_log_error("dbus_bus_get(): %s", error.message); + avahi_log_error("dbus_bus_get_private(): %s", error.message); goto fail; } +#else + { + const char *a; + + if (!(a = getenv("DBUS_SYSTEM_BUS_ADDRESS")) || !*a) + a = DBUS_SYSTEM_BUS_DEFAULT_ADDRESS; + + if (!(server->bus = dbus_connection_open_private(a, &error))) { + assert(dbus_error_is_set(&error)); + avahi_log_error("dbus_bus_open_private(): %s", error.message); + goto fail; + } + + if (!dbus_bus_register(server->bus, &error)) { + assert(dbus_error_is_set(&error)); + avahi_log_error("dbus_bus_register(): %s", error.message); + goto fail; + } + } +#endif + if (avahi_dbus_connection_glue(server->bus, server->poll_api) < 0) { avahi_log_error("avahi_dbus_connection_glue() failed"); goto fail; @@ -1067,10 +1089,10 @@ static int dbus_connect(void) { if (dbus_bus_request_name( server->bus, AVAHI_DBUS_NAME, -#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 60) - DBUS_NAME_FLAG_DO_NOT_QUEUE, -#else +#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR < 60) DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT, +#else + DBUS_NAME_FLAG_DO_NOT_QUEUE, #endif &error) != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { if (dbus_error_is_set(&error)) { @@ -1171,6 +1193,7 @@ fail: #else dbus_connection_disconnect(server->bus); #endif + dbus_connection_unref(server->bus); }