summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Vossel <dvossel@digium.com>2010-09-01 21:48:32 +0000
committerDavid Vossel <dvossel@digium.com>2010-09-01 21:48:32 +0000
commitc28c620936e31ec5a63147ae20d82d621541ae90 (patch)
treebe75d69b505a73c683bfffb84316cdd979f4bf73
parent920f5ea8b7ba39394b23037da82c92529b6b61a7 (diff)
Merged revisions 284561 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r284561 | dvossel | 2010-09-01 16:47:01 -0500 (Wed, 01 Sep 2010) | 9 lines During request to dialog matching, verify init_ruri is present before comparing. During request to dialog matching, we attempt a best effort routine for fork detection which requires several elements to be in place. The dialog's initial request uri is one of those elements. Since it is best effort, if the init_ruri is not present for some reason we can not proceed with that routine. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@284562 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--channels/chan_sip.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index a990e7849..09531f2ad 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -7204,7 +7204,10 @@ enum match_req_res {
*/
static enum match_req_res match_req_to_dialog(struct sip_pvt *sip_pvt_ptr, struct match_req_args *arg)
{
- const char *init_ruri = REQ_OFFSET_TO_STR(&sip_pvt_ptr->initreq, rlPart2);
+ const char *init_ruri = NULL;
+ if (sip_pvt_ptr->initreq.headers) {
+ init_ruri = REQ_OFFSET_TO_STR(&sip_pvt_ptr->initreq, rlPart2);
+ }
/*
* Match Tags and call-id to Dialog
@@ -7263,8 +7266,8 @@ static enum match_req_res match_req_to_dialog(struct sip_pvt *sip_pvt_ptr, struc
if ((arg->method != SIP_RESPONSE) && /* must be a Request */
ast_strlen_zero(arg->totag) && /* must not have a totag */
(sip_pvt_ptr->init_icseq == arg->seqno) && /* the cseq must be the same as this dialogs initial cseq */
- !ast_strlen_zero(sip_pvt_ptr->initviabranch)) { /* The dialog must have started with a RFC3261 compliant branch tag */
-
+ !ast_strlen_zero(sip_pvt_ptr->initviabranch) && /* The dialog must have started with a RFC3261 compliant branch tag */
+ init_ruri) { /* the dialog must have an initial request uri associated with it */
/* This Request matches all the criteria required for Loop/Merge detection.
* Now we must go down the path of comparing VIA's and RURIs. */
if (ast_strlen_zero(arg->viabranch) ||