From: David Vossel Date: Wed, 25 Aug 2010 22:57:56 +0000 (+0000) Subject: Merged revisions 283594 via svnmerge from X-Git-Tag: 1.8.0-beta5~3^2~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e781f27150a0aa9737df1a502f2dbd5b42fc776c;p=thirdparty%2Fasterisk.git Merged revisions 283594 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r283594 | dvossel | 2010-08-25 17:56:42 -0500 (Wed, 25 Aug 2010) | 7 lines Add to and from tags to NOTIFY dialog-info xml body so pickup can occur. When pedantic mode is used, the dialog-info xml generated during a ringing event must contain the to and from tag values. Otherwise if a pickup occurs using INVITE with replaces, Astrisk will not be able to locate the subscription. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@283595 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 7124bc9a57..957d7b62e4 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -11685,8 +11685,14 @@ static void state_notify_build_xml(int state, int full, const char *exten, const /* We create a fake call-id which the phone will send back in an INVITE Replaces header which we can grab and do some magic with. */ + if (sip_cfg.pedanticsipchecking) { + ast_str_append(tmp, 0, "\n", + exten, p->callid, p->theirtag, p->tag); + } else { + ast_str_append(tmp, 0, "\n", + exten, p->callid); + } ast_str_append(tmp, 0, - "\n" "\n" /* See the limitations of this above. Luckily the phone seems to still be happy when these values are not correct. */ @@ -11697,7 +11703,7 @@ static void state_notify_build_xml(int state, int full, const char *exten, const "%s\n" "\n" "\n", - exten, p->callid, local_display, local_target, local_target, mto, mto); + local_display, local_target, local_target, mto, mto); } else { ast_str_append(tmp, 0, "\n", exten); } @@ -20951,7 +20957,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int struct sip_pvt *subscription = NULL; replace_id += 7; /* Worst case we are looking at \0 */ - if ((subscription = get_sip_pvt_byid_locked(replace_id, NULL, NULL)) == NULL) { + if ((subscription = get_sip_pvt_byid_locked(replace_id, totag, fromtag)) == NULL) { ast_log(LOG_NOTICE, "Unable to find subscription with call-id: %s\n", replace_id); transmit_response_reliable(p, "481 Call Leg Does Not Exist (Replaces)", req); error = 1;