From: Joshua C. Colp Date: Tue, 22 Sep 2020 10:13:32 +0000 (-0300) Subject: res_pjsip_session: Fix session reference leak. X-Git-Tag: 16.15.0-rc1~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6ed74347ce748361e92bb0341c47c0ec2d0065f;p=thirdparty%2Fasterisk.git res_pjsip_session: Fix session reference leak. The ast_sip_dialog_get_session function returns the session with reference count increased. This was not taken into account and was causing sessions to remain around when they should not be. ASTERISK-29089 Change-Id: I430fa721b0a824311a59effec6056e9ec528e3e8 --- diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 19e0528e83..009111373c 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -5238,7 +5238,7 @@ static void session_outgoing_nat_hook(pjsip_tx_data *tdata, struct ast_sip_trans tdata->mod_data, session_module.id, MOD_DATA_NAT_HOOK); struct pjmedia_sdp_session *sdp; pjsip_dialog *dlg = pjsip_tdata_get_dlg(tdata); - struct ast_sip_session *session = dlg ? ast_sip_dialog_get_session(dlg) : NULL; + RAII_VAR(struct ast_sip_session *, session, dlg ? ast_sip_dialog_get_session(dlg) : NULL, ao2_cleanup); int stream; /* SDP produced by us directly will never be multipart */