summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2012-04-27 18:59:36 +0000
committerKinsey Moore <kmoore@digium.com>2012-04-27 18:59:36 +0000
commit83cf78deda23b3799751c6a25df83eecf973e348 (patch)
treeb64eb0f1c7890b667d42c85cc847ff059527ca72
parent103031330aa411b50b930ad7e307c3d187fda821 (diff)
Allow SIP pvts involved in Replaces transfers to fall out of reference sooner
Unref the SIP pvt stored in the refer structure as soon as it is no longer needed so that the pvt and associated file descriptors can be freed sooner. This change makes a reference decrement unnecessary in code that handles SIP BYE/Also transfers which should not touch the reference anyway. (Closes issue ASTERISK-19579) Reported by: Maciej Krajewski Tested by: Maciej Krajewski ........ Merged revisions 364258 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 364259 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@364260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--channels/chan_sip.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 45ae893e6..75af69d0d 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -16309,7 +16309,6 @@ static int get_also_info(struct sip_pvt *p, struct sip_request *oreq)
ast_copy_string(referdata->refer_to, c, sizeof(referdata->refer_to));
ast_copy_string(referdata->referred_by, "", sizeof(referdata->referred_by));
ast_copy_string(referdata->refer_contact, "", sizeof(referdata->refer_contact));
- referdata->refer_call = dialog_unref(referdata->refer_call, "unreffing referdata->refer_call");
/* Set new context */
ast_string_field_set(p, context, transfer_context);
return 0;
@@ -23948,6 +23947,7 @@ request_invite_cleanup:
if (p->refer->refer_call->owner) {
ast_channel_unlock(p->refer->refer_call->owner);
}
+ p->refer->refer_call = dialog_unref(p->refer->refer_call, "unref dialog p->refer->refer_call");
}
if (authpeer) {
authpeer = sip_unref_peer(authpeer, "sip_unref_peer, from handle_request_invite authpeer");