diff options
Diffstat (limited to 'audio/avdtp.c')
-rw-r--r-- | audio/avdtp.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/audio/avdtp.c b/audio/avdtp.c index 8615a18a..cf6060e4 100644 --- a/audio/avdtp.c +++ b/audio/avdtp.c @@ -349,8 +349,6 @@ static gboolean disconnect_timeout(gpointer user_data) assert(session->ref == 1); - sessions = g_slist_remove(sessions, session); - session->dc_timer = 0; avdtp_unref(session); @@ -1612,7 +1610,7 @@ static struct avdtp *find_session(bdaddr_t *src, bdaddr_t *dst) return NULL; } -struct avdtp *avdtp_get(bdaddr_t *src, bdaddr_t *dst) +static struct avdtp *avdtp_get_internal(bdaddr_t *src, bdaddr_t *dst) { struct avdtp *session; @@ -1633,6 +1631,15 @@ struct avdtp *avdtp_get(bdaddr_t *src, bdaddr_t *dst) sessions = g_slist_append(sessions, session); + return session; +} + +struct avdtp *avdtp_get(bdaddr_t *src, bdaddr_t *dst) +{ + struct avdtp *session; + + session = avdtp_get_internal(src, dst); + return avdtp_ref(session); } @@ -2053,7 +2060,7 @@ static gboolean avdtp_server_cb(GIOChannel *chan, GIOCondition cond, void *data) return TRUE; } - session = avdtp_get(&src, &dst); + session = avdtp_get_internal(&src, &dst); if (session->pending_open && session->pending_open->open_acp) { handle_transport_connect(session, cli_sk, l2o.imtu); |