chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip.
authorStefanEng86 <stefanen@kth.se>
Fri, 29 Jan 2016 13:39:06 +0000 (14:39 +0100)
committerJoshua Colp <jcolp@digium.com>
Sun, 31 Jan 2016 16:23:56 +0000 (10:23 -0600)
When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a)
AMI action: SIPnotify or b) cli command: sip notify <cmd> <peer>, I expect
asterisk to include the same value for its own ip in both cases a) and b),
but it seems a) produces a contact header like Contact:
<sip:asterisk@192.168.1.227:8060> whereas b) produces a contact header like
<sip:asterisk@127.0.0.1:8060>. 0.0.0.0:8060 is my udpbindaddr in sip.conf

My guess is that manager_sipnotify should call
ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does,
because after applying this patch, both cases a) and b) produce
the contact header that I expect: <sip:asterisk@192.168.1.227:8060>

Reported by: Stefan Engström
Tested by: Stefan Engström

Change-Id: I86af5e209db64aab82c25417de6c768fb645f476

channels/chan_sip.c

index a3c6fb2..10b0d23 100644 (file)
@@ -15160,6 +15160,12 @@ static int manager_sipnotify(struct mansession *s, const struct message *m)
                }
        }
 
+       /* Now that we have the peer's address, set our ip and change callid */
+       ast_sip_ouraddrfor(&p->sa, &p->ourip, p);
+       build_via(p);
+
+       change_callid_pvt(p, NULL);
+
        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.");