Skip to content
Snippets Groups Projects
Commit 2db81ee2 authored by Paulo Vicentini's avatar Paulo Vicentini
Browse files

res/res_pjsip: Resources (udptl fd) are leaking for T.38 calls

Fix unbalanced references for datastore t38_session_media

ASTERISK-28288

Change-Id: Id6dceceb06651b03f611bf33deb3061022fe5d0c
parent 44914234
No related branches found
No related tags found
No related merge requests found
...@@ -147,18 +147,23 @@ static struct ast_sip_session_media *session_media_from_datastore_addref(struct ...@@ -147,18 +147,23 @@ static struct ast_sip_session_media *session_media_from_datastore_addref(struct
} }
/*! \brief Helper function which allocates datastore with a session media */ /*! \brief Helper function which allocates datastore with a session media */
static struct ast_datastore *create_datastore_session_media(struct ast_sip_session *session, struct ast_sip_session_media *session_media) static int create_datastore_session_media(struct ast_sip_session *session, struct ast_sip_session_media *session_media)
{ {
struct ast_datastore *datastore = NULL; struct ast_datastore *datastore = NULL;
if (!(datastore = ast_sip_session_alloc_datastore(&session_media_datastore, "t38_session_media")) if (!(datastore = ast_sip_session_alloc_datastore(&session_media_datastore, "t38_session_media"))) {
|| ast_sip_session_add_datastore(session, datastore)) { return -1;
return NULL; }
if (ast_sip_session_add_datastore(session, datastore)) {
ao2_ref(datastore, -1);
return -1;
} }
datastore->data = session_media; datastore->data = session_media;
ao2_bump(session_media); ao2_bump(session_media);
return datastore; ao2_ref(datastore, -1);
return 0;
} }
/*! \brief Helper function for changing the T.38 state */ /*! \brief Helper function for changing the T.38 state */
...@@ -296,7 +301,7 @@ static int t38_initialize_session(struct ast_sip_session *session, struct ast_si ...@@ -296,7 +301,7 @@ static int t38_initialize_session(struct ast_sip_session *session, struct ast_si
return 0; return 0;
} }
if (!create_datastore_session_media(session, session_media)) { if (create_datastore_session_media(session, session_media)) {
return -1; return -1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment