diff --git a/src/adapter.c b/src/adapter.c
index 3329715..e71f619 100644
--- a/src/adapter.c
+++ b/src/adapter.c
DBusMessage *msg; /* Unreplied message ref */
char *owner; /* Bus name of the owner */
guint id; /* Listener id */
- int refcount; /* Session refcount */
};
struct service_auth {
g_key_file_free(key_file);
}
-static struct session_req *session_ref(struct session_req *req)
-{
- req->refcount++;
-
- DBG("%p: ref=%d", req, req->refcount);
-
- return req;
-}
-
static struct session_req *create_session(struct btd_adapter *adapter,
DBusMessage *msg,
GDBusWatchFunction cb)
req->adapter = adapter;
if (msg == NULL)
- return session_ref(req);
+ return req;
req->msg = dbus_message_ref(msg);
if (cb == NULL)
- return session_ref(req);
+ return req;
sender = dbus_message_get_sender(msg);
req->owner = g_strdup(sender);
DBG("session %p with %s activated", req, sender);
- return session_ref(req);
+ return req;
}
static void trigger_pairable_timeout(struct btd_adapter *adapter);
session_free(req);
}
-static void session_unref(struct session_req *req)
-{
- req->refcount--;
-
- DBG("%p: ref=%d", req, req->refcount);
-
- if (req->refcount)
- return;
-
- session_remove(req);
- session_free(req);
-}
-
static void local_name_changed_callback(uint16_t index, uint16_t length,
const void *param, void *user_data)
{
return btd_error_not_ready(msg);
req = find_session(adapter->discov_sessions, sender);
- if (req) {
- session_ref(req);
- return dbus_message_new_method_return(msg);
- }
+ if (req)
+ return btd_error_busy(msg);
if (adapter->discov_sessions)
goto done;
if (!req)
return btd_error_failed(msg, "Invalid discovery session");
- session_unref(req);
+ session_remove(req);
+ session_free(req);
DBG("stopping discovery");
connect_list_len = g_slist_length(adapter->connect_list);
if (connect_list_len == 0 && adapter->scanning_session) {
- session_unref(adapter->scanning_session);
+ session_remove(adapter->scanning_session);
+ session_free(adapter->scanning_session);
adapter->scanning_session = NULL;
}