diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2007-05-09 10:12:59 +0000 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2007-05-09 10:12:59 +0000 | 
| commit | 713c02da5280e15e5110a187f509648c65de4936 (patch) | |
| tree | 8b77e66099c87b0a17a0ea8f5cccb03f45b32b3e | |
| parent | e4d113429614e120642e00e3a0a67c0ef62778ce (diff) | |
Only clean up sdp sessions for the local adapter in question
| -rw-r--r-- | hcid/dbus-sdp.c | 11 | 
1 files changed, 5 insertions, 6 deletions
| diff --git a/hcid/dbus-sdp.c b/hcid/dbus-sdp.c index 8baeb79b..925985c1 100644 --- a/hcid/dbus-sdp.c +++ b/hcid/dbus-sdp.c @@ -201,10 +201,7 @@ static struct cached_session *get_cached_session(bdaddr_t *src, bdaddr_t *dst)  		if (get_bdaddrs(sock, &sba, &dba) < 0)  			continue; -		if (bacmp(src, BDADDR_ANY) && bacmp(&sba, src)) -			continue; - -		if (bacmp(&dba, dst)) +		if (bacmp(&sba, src) || bacmp(&dba, dst))  			continue;  		debug("found matching session, removing from list"); @@ -978,8 +975,9 @@ DBusHandlerResult finish_remote_svc_transact(DBusConnection *conn,  {  	struct cached_session *s;  	const char *address; +	struct adapter *adapter = data;  	DBusMessage *reply; -	bdaddr_t dba; +	bdaddr_t sba, dba;  	if (!dbus_message_get_args(msg, NULL,  			DBUS_TYPE_STRING, &address, @@ -990,9 +988,10 @@ DBusHandlerResult finish_remote_svc_transact(DBusConnection *conn,  	if (!reply)  		return DBUS_HANDLER_RESULT_NEED_MEMORY; +	str2ba(adapter->address, &sba);  	str2ba(address, &dba); -	while ((s = get_cached_session(BDADDR_ANY, &dba))) { +	while ((s = get_cached_session(&sba, &dba))) {  		sdp_close(s->session);  		g_source_remove(s->timeout_id);  		g_source_remove(s->io_id); | 
