Skip to content
Snippets Groups Projects
Commit c28c6209 authored by David Vossel's avatar David Vossel
Browse files

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
parent 920f5ea8
Branches
Tags
No related merge requests found
...@@ -7204,7 +7204,10 @@ enum match_req_res { ...@@ -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) 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 * 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 ...@@ -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 */ if ((arg->method != SIP_RESPONSE) && /* must be a Request */
ast_strlen_zero(arg->totag) && /* must not have a totag */ 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 */ (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. /* This Request matches all the criteria required for Loop/Merge detection.
* Now we must go down the path of comparing VIA's and RURIs. */ * Now we must go down the path of comparing VIA's and RURIs. */
if (ast_strlen_zero(arg->viabranch) || if (ast_strlen_zero(arg->viabranch) ||
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment