diff options
Diffstat (limited to 'hcid/dbus-test.c')
| -rw-r--r-- | hcid/dbus-test.c | 30 | 
1 files changed, 15 insertions, 15 deletions
| diff --git a/hcid/dbus-test.c b/hcid/dbus-test.c index 2ace4252..23876c07 100644 --- a/hcid/dbus-test.c +++ b/hcid/dbus-test.c @@ -79,6 +79,8 @@ struct audit {  	uint16_t mask_result;  	uint32_t mask; + +	guint listener_id;  };  static GSList *audits = NULL; @@ -127,9 +129,12 @@ static void send_audit_status(struct audit *audit, const char *name)  					DBUS_TYPE_INVALID);  } -static void audit_requestor_exited(const char *name, struct audit *audit) +static void audit_requestor_exited(const char *name, void *user_data)  { +	struct audit *audit = user_data; +  	debug("AuditRemoteDevice requestor %s exited", name); +  	audits = g_slist_remove(audits, audit);  	if (audit->io) {  		struct adapter *adapter = NULL; @@ -178,8 +183,7 @@ static gboolean l2raw_input_timer(struct audit *audit)  	g_io_channel_close(audit->io);  	audits = g_slist_remove(audits, audit); -	name_listener_remove(audit->conn, audit->requestor, -				(name_cb_t) audit_requestor_exited, audit); +	name_listener_id_remove(audit->listener_id);  	audit_free(audit);  	return FALSE; @@ -323,8 +327,7 @@ failed:  	g_io_channel_close(io);  	g_io_channel_unref(io);  	audits = g_slist_remove(audits, audit); -	name_listener_remove(audit->conn, audit->requestor, -				(name_cb_t) audit_requestor_exited, audit); +	name_listener_id_remove(audit->listener_id);  	process_audits_list(audit->adapter_path); @@ -399,8 +402,7 @@ failed:  	g_io_channel_close(io);  	g_io_channel_unref(io);  	audits = g_slist_remove(audits, audit); -	name_listener_remove(audit->conn, audit->requestor, -				(name_cb_t) audit_requestor_exited, audit); +	name_listener_id_remove(audit->listener_id);  	audit_free(audit);  	return FALSE; @@ -481,8 +483,9 @@ static DBusHandlerResult audit_remote_device(DBusConnection *conn,  						(GIOFunc) l2raw_connect_complete, audit);  	} -	name_listener_add(conn, dbus_message_get_sender(msg), -				(name_cb_t) audit_requestor_exited, audit); +	audit->listener_id = name_listener_add(conn, +						dbus_message_get_sender(msg), +						audit_requestor_exited, audit);  	audits = g_slist_append(audits, audit); @@ -538,8 +541,7 @@ static DBusHandlerResult cancel_audit_remote_device(DBusConnection *conn,  		g_source_remove(audit->timeout);  	audits = g_slist_remove(audits, audit); -	name_listener_remove(audit->conn, audit->requestor, -				(name_cb_t) audit_requestor_exited, audit); +	name_listener_id_remove(audit->listener_id);  	audit_free(audit);  	reply = dbus_message_new_method_return(msg); @@ -682,8 +684,7 @@ void process_audits_list(const char *adapter_path)  		if (!adapter) {  			audits = g_slist_remove(audits, audit); -			name_listener_remove(audit->conn, audit->requestor, -					(name_cb_t) audit_requestor_exited, audit); +			name_listener_id_remove(audit->listener_id);  			audit_free(audit);  			continue;  		} @@ -696,8 +697,7 @@ void process_audits_list(const char *adapter_path)  		if (sk < 0) {  			send_audit_status(audit, "AuditRemoteDeviceFailed");  			audits = g_slist_remove(audits, audit); -			name_listener_remove(audit->conn, audit->requestor, -					(name_cb_t) audit_requestor_exited, audit); +			name_listener_id_remove(audit->listener_id);  			audit_free(audit);  			continue;  		} | 
