summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--avahi-daemon/avahi-daemon.conf2
-rw-r--r--avahi-daemon/dbus-protocol.c45
2 files changed, 34 insertions, 13 deletions
diff --git a/avahi-daemon/avahi-daemon.conf b/avahi-daemon/avahi-daemon.conf
index f3f81f7..284a7fa 100644
--- a/avahi-daemon/avahi-daemon.conf
+++ b/avahi-daemon/avahi-daemon.conf
@@ -24,6 +24,6 @@ reflect-ipv=no
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
-rlimit-nofile=15
+rlimit-nofile=30
rlimit-stack=4194304
rlimit-nproc=1
diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c
index 772756b..4816a6c 100644
--- a/avahi-daemon/dbus-protocol.c
+++ b/avahi-daemon/dbus-protocol.c
@@ -1665,7 +1665,6 @@ int dbus_protocol_setup(const AvahiPoll *poll_api) {
NULL
};
-
dbus_error_init(&error);
server = avahi_new(Server, 1);
@@ -1673,23 +1672,43 @@ int dbus_protocol_setup(const AvahiPoll *poll_api) {
server->current_id = 0;
server->n_clients = 0;
- server->bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
- if (dbus_error_is_set(&error)) {
- avahi_log_warn("dbus_bus_get(): %s", error.message);
+ if (!(server->bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error))) {
+ assert(dbus_error_is_set(&error));
+ avahi_log_error("dbus_bus_get(): %s", error.message);
goto fail;
}
- avahi_dbus_connection_glue(server->bus, poll_api);
+ if (avahi_dbus_connection_glue(server->bus, poll_api) < 0) {
+ avahi_log_error("avahi_dbus_connection_glue() failed");
+ goto fail;
+ }
- dbus_bus_request_name(server->bus, AVAHI_DBUS_NAME, 0, &error);
- if (dbus_error_is_set(&error)) {
- avahi_log_warn("dbus_bus_request_name(): %s", error.message);
+ if (dbus_bus_request_name(server->bus, AVAHI_DBUS_NAME, DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT, &error) != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ if (dbus_error_is_set(&error)) {
+ avahi_log_error("dbus_bus_request_name(): %s", error.message);
+ goto fail;
+ }
+
+ avahi_log_error("Failed to acquire DBUS name '"AVAHI_DBUS_NAME"'");
goto fail;
}
- dbus_connection_add_filter(server->bus, msg_signal_filter_impl, (void*) poll_api, NULL);
+ if (!(dbus_connection_add_filter(server->bus, msg_signal_filter_impl, (void*) poll_api, NULL))) {
+ avahi_log_error("dbus_connection_add_filter() failed");
+ goto fail;
+ }
+
dbus_bus_add_match(server->bus, "type='signal',""interface='" DBUS_INTERFACE_DBUS "'", &error);
- dbus_connection_register_object_path(server->bus, AVAHI_DBUS_PATH_SERVER, &server_vtable, NULL);
+
+ if (dbus_error_is_set(&error)) {
+ avahi_log_error("dbus_bus_add_match(): %s", error.message);
+ goto fail;
+ }
+
+ if (!(dbus_connection_register_object_path(server->bus, AVAHI_DBUS_PATH_SERVER, &server_vtable, NULL))) {
+ avahi_log_error("dbus_connection_register_object_path() failed");
+ goto fail;
+ }
return 0;
@@ -1698,8 +1717,10 @@ fail:
dbus_connection_disconnect(server->bus);
dbus_connection_unref(server->bus);
}
-
- dbus_error_free (&error);
+
+ if (dbus_error_is_set(&error))
+ dbus_error_free(&error);
+
avahi_free(server);
server = NULL;
return -1;