dbus_connection_unref(client->bus);
client->bus = NULL;
}
-
+
/* Fall through */
-
+
case AVAHI_CLIENT_S_COLLISION:
case AVAHI_CLIENT_S_REGISTERING:
client->domain_name = NULL;
break;
- case AVAHI_CLIENT_S_INVALID:
case AVAHI_CLIENT_S_RUNNING:
break;
} if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) {
char *name, *old, *new;
- if (!(dbus_message_get_args(
+ if (!dbus_message_get_args(
message, &error,
DBUS_TYPE_STRING, &name,
DBUS_TYPE_STRING, &old,
DBUS_TYPE_STRING, &new,
- DBUS_TYPE_INVALID) || dbus_error_is_set (&error))) {
+ DBUS_TYPE_INVALID) || dbus_error_is_set (&error)) {
fprintf(stderr, "WARNING: Failed to parse NameOwnerChanged signal: %s\n", error.message);
goto fail;
} else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_SERVER, "StateChanged")) {
int32_t state;
+ char *e = NULL;
+ int c;
- if (!(dbus_message_get_args(
+ if (!dbus_message_get_args(
message, &error,
DBUS_TYPE_INT32, &state,
- DBUS_TYPE_INVALID) || dbus_error_is_set (&error))) {
+ DBUS_TYPE_STRING, &e,
+ DBUS_TYPE_INVALID) || dbus_error_is_set (&error)) {
fprintf(stderr, "WARNING: Failed to parse Server.StateChanged signal: %s\n", error.message);
goto fail;
}
-
+
+ if ((c = avahi_error_dbus_to_number(e)) != AVAHI_OK)
+ avahi_client_set_errno(client, c);
+
client_set_state(client, (AvahiClientState) state);
} else if (dbus_message_is_signal (message, AVAHI_DBUS_INTERFACE_ENTRY_GROUP, "StateChanged")) {
if (g) {
int32_t state;
- if (!(dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID)) ||
+ char *e;
+ int c;
+
+ if (!dbus_message_get_args(
+ message, &error,
+ DBUS_TYPE_INT32, &state,
+ DBUS_TYPE_STRING, &e,
+ DBUS_TYPE_INVALID) ||
dbus_error_is_set(&error)) {
fprintf(stderr, "WARNING: Failed to parse EntryGroup.StateChanged signal: %s\n", error.message);
goto fail;
}
+
+ if ((c = avahi_error_dbus_to_number(e)) != AVAHI_OK)
+ avahi_client_set_errno(client, c);
avahi_entry_group_set_state(g, state);
}
if (!reply || dbus_error_is_set (&error))
goto fail;
- if (!(dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID)) ||
+ if (!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID) ||
dbus_error_is_set (&error))
goto fail;