diff --git a/src/main.c b/src/main.c index 1550408..867a0eb 100644 --- a/src/main.c +++ b/src/main.c @@ -269,11 +269,18 @@ roxterm_dbus_service_ready(DBusConnection * connection, dbus_message_get_args(message, &derror, DBUS_TYPE_STRING, &service_name, DBUS_TYPE_INVALID); - if (!strcmp(service_name, ROXTERM_DBUS_NAME)) + if (!service_name) + { + rtdbus_warn(&derror, "NULL service name in service_ready handler"); + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + } + else if (!strcmp(service_name, ROXTERM_DBUS_NAME)) { //g_debug("We acquired service name '%s'", service_name); //g_debug("dbus service ready, sending OK down pipe roxterm_idle_ok(user_data); + dbus_connection_remove_filter(connection, roxterm_dbus_service_ready, + user_data); } return DBUS_HANDLER_RESULT_HANDLED; } diff --git a/src/rtdbus.c b/src/rtdbus.c index 4d17d8d..afe0926 100644 --- a/src/rtdbus.c +++ b/src/rtdbus.c @@ -39,6 +39,14 @@ void rtdbus_whinge(DBusError * pderror, const char *s) dbus_error_free(pderror); } +void rtdbus_warn(DBusError * pderror, const char *s) +{ + g_warning("%s: %s", s, + dbus_error_is_set(pderror) ? pderror->message : _("")); + if (dbus_error_is_set(pderror)) + dbus_error_free(pderror); +} + static void rtdbus_shutdown(void) { if (rtdbus_connection) diff --git a/src/rtdbus.h b/src/rtdbus.h index 4cd2632..639b786 100644 --- a/src/rtdbus.h +++ b/src/rtdbus.h @@ -39,9 +39,13 @@ extern DBusGConnection *rtdbus_g_connection; extern gboolean rtdbus_ok; -/* Report a D-BUS error, prepending message 's', then free the error data */ +/* Report a D-BUS error in a dialog, prepending message 's', + * then free the error data */ void rtdbus_whinge(DBusError *pderror, const char *s); +/* As above but print it on the console with g_warning */ +void rtdbus_warn(DBusError *pderror, const char *s); + /* Unrefs message after sending */ gboolean rtdbus_send_message(DBusMessage *message);