]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 331517 via svnmerge from
authorKinsey Moore <kmoore@digium.com>
Wed, 10 Aug 2011 22:23:49 +0000 (22:23 +0000)
committerKinsey Moore <kmoore@digium.com>
Wed, 10 Aug 2011 22:23:49 +0000 (22:23 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r331517 | kmoore | 2011-08-10 17:23:08 -0500 (Wed, 10 Aug 2011) | 10 lines

  SIP Notify via AMI or CLI leaks SIP PVTs

  Any SIP notify sent via AMI or CLI leaks a SIP PVT with ref count +2.  Removing
  the additional ref just before the invite and adding an unref following it
  corrects the issue as seen via REF_DEBUG.  The unref existed in a distant
  revision and it appears as though the wrong ref operation was removed.

  (closes issue ASTERISK-18091)
  Review: https://reviewboard.asterisk.org/r/1332/
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@331518 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index ed0e3bb651bc0b1196438dc8eda83b5261e768b9..aa681da3173414f4ea6d90d75b60f758c005d114 100644 (file)
@@ -12727,9 +12727,9 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
                }
        }
 
-       dialog_ref(p, "bump the count of p, which transmit_sip_request will decrement.");
        sip_scheddestroy(p, SIP_TRANS_TIMEOUT);
        transmit_invite(p, SIP_NOTIFY, 0, 2, NULL);
+       dialog_unref(p, "bump down the count of p since we're done with it.");
 
        astman_send_ack(s, m, "Notify Sent");
        ast_variables_destroy(vars);
@@ -18949,9 +18949,9 @@ static char *sip_cli_notify(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
 
                /* Recalculate our side, and recalculate Call ID */
                ast_cli(a->fd, "Sending NOTIFY of type '%s' to '%s'\n", a->argv[2], a->argv[i]);
-               dialog_ref(p, "bump the count of p, which transmit_sip_request will decrement.");
                sip_scheddestroy(p, SIP_TRANS_TIMEOUT);
                transmit_invite(p, SIP_NOTIFY, 0, 2, NULL);
+               dialog_unref(p, "bump down the count of p since we're done with it.");
        }
 
        return CLI_SUCCESS;