From 713c02da5280e15e5110a187f509648c65de4936 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 9 May 2007 10:12:59 +0000 Subject: Only clean up sdp sessions for the local adapter in question --- hcid/dbus-sdp.c | 11 +++++------ 1 file 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); -- cgit