From: Walter Doekes Date: Wed, 24 Sep 2014 08:52:24 +0000 (+0000) Subject: chan_sip: Unref outbound proxy structure on dialog/pvt destruction. X-Git-Tag: 12.7.0-rc1~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be0ac348c669220132fcdb128c33e0305ea22b38;p=thirdparty%2Fasterisk.git chan_sip: Unref outbound proxy structure on dialog/pvt destruction. Make sure outbound proxy refs are always unreffed on dialog destruction. Review: https://reviewboard.asterisk.org/r/4016/ ........ Merged revisions 423800 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 423801 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@423802 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 8c8efcb1a2..46f0d8df4a 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4446,7 +4446,7 @@ int __sip_ack(struct sip_pvt *p, uint32_t seqno, int resp, int sipmethod) If obforcing is set, we will keep the outbound proxy during the whole dialog, regardless of what the SIP rfc says */ - if (p->outboundproxy && !p->outboundproxy->force){ + if (p->outboundproxy && !p->outboundproxy->force) { ref_proxy(p, NULL); } @@ -6508,6 +6508,10 @@ void __sip_destroy(struct sip_pvt *p, int lockowner, int lockdialoglist) p->options = NULL; } + if (p->outboundproxy) { + ref_proxy(p, NULL); + } + if (p->notify) { ast_variables_destroy(p->notify->headers); ast_free(p->notify->content);