diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2007-06-22 01:34:51 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2007-06-22 01:34:51 +0000 | 
| commit | 1a2e7943da42619730e442d1ff6ab08b9c2c621d (patch) | |
| tree | 77d8548772fffbeb0f7312c548e1a5af9d8a6f67 | |
| parent | dc910eeb1f381a883ad9e1617a7f72efd04a2d46 (diff) | |
Fix handling of name_listeners without a sender
| -rw-r--r-- | common/dbus.c | 20 | ||||
| -rw-r--r-- | common/dbus.h | 1 | 
2 files changed, 19 insertions, 2 deletions
| diff --git a/common/dbus.c b/common/dbus.c index ef3188d9..17f340b6 100644 --- a/common/dbus.c +++ b/common/dbus.c @@ -88,7 +88,8 @@ static struct name_data *name_data_find(const char *name)  {  	GSList *current; -	for (current = name_listeners; current != NULL; current = current->next) { +	for (current = name_listeners; +			current != NULL; current = current->next) {  		struct name_data *data = current->data;  		if (strcmp(name, data->name) == 0)  			return data; @@ -98,7 +99,7 @@ static struct name_data *name_data_find(const char *name)  }  static struct name_callback *name_callback_find(GSList *callbacks, -						name_cb_t func, void *user_data) +					name_cb_t func, void *user_data)  {  	GSList *current; @@ -228,6 +229,9 @@ int name_listener_add(DBusConnection *connection, const char *name,  		name_listener_initialized = 1;  	} +	if (!name) +		return -1; +  	first = name_data_add(name, func, user_data);  	/* The filter is already added if this is not the first callback  	 * registration for the name */ @@ -262,6 +266,9 @@ int name_listener_remove(DBusConnection *connection, const char *name,  	DBusError err;  	char match_string[128]; +	if (!name) +		return -1; +  	debug("name_listener_remove(%s)", name);  	data = name_data_find(name); @@ -302,6 +309,11 @@ int name_listener_remove(DBusConnection *connection, const char *name,  	return 0;  } +int name_listener_indicate_disconnect(DBusConnection *connection) +{ +	return 0; +} +  dbus_bool_t dbus_bus_get_unix_process_id(DBusConnection *conn, const char *name,  						unsigned long *pid)  { @@ -598,6 +610,8 @@ static void dispatch_status_cb(DBusConnection *conn,  void setup_dbus_server_with_main_loop(DBusServer *server)  {  #ifdef HAVE_DBUS_GLIB +	debug("Using D-Bus GLib server setup"); +  	dbus_server_setup_with_g_main(server, NULL);  #else  	dbus_server_allocate_data_slot(&server_slot); @@ -617,6 +631,8 @@ void setup_dbus_server_with_main_loop(DBusServer *server)  void setup_dbus_with_main_loop(DBusConnection *conn)  {  #ifdef HAVE_DBUS_GLIB +	debug("Using D-Bus GLib connection setup"); +  	dbus_connection_setup_with_g_main(conn, NULL);  #else  	dbus_connection_set_watch_functions(conn, add_watch, remove_watch, diff --git a/common/dbus.h b/common/dbus.h index 23448cf7..e91fd3cf 100644 --- a/common/dbus.h +++ b/common/dbus.h @@ -46,6 +46,7 @@ int name_listener_add(DBusConnection *connection, const char *name,  				name_cb_t func, void *user_data);  int name_listener_remove(DBusConnection *connection, const char *name,  				name_cb_t func, void *user_data); +int name_listener_indicate_disconnect(DBusConnection *connection);  dbus_bool_t dbus_bus_get_unix_process_id(DBusConnection *conn, const char *name,  						unsigned long *pid); | 
