Merged revisions 279568 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Mon, 26 Jul 2010 20:00:52 +0000 (20:00 +0000)
committerDavid Vossel <dvossel@digium.com>
Mon, 26 Jul 2010 20:00:52 +0000 (20:00 +0000)
commit4a98994542bb56bc7252cf70a3394311fd01e968
tree5f612d10ca48c649bb42845e9402e2e9aa80e4e0
parent4bd366a92660f8b650c7c640d76659326dc90751
Merged revisions 279568 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r279568 | dvossel | 2010-07-26 14:59:03 -0500 (Mon, 26 Jul 2010) | 21 lines

  transaction matching using top most Via header

  This patch modifies the way chan_sip.c does transaction to dialog
  matching.  Asterisk now stores information in the top most Via header
  of the initial incoming request and compares that against other Requests
  that have the same call-id.  This results in Asterisk being able to
  detect a forked call in which it has received multiple legs of the
  fork.  I completely stripped out the previous matching code and made
  the comparisons a little more explicit and easier to understand.  My
  comments in the code should offer all the details involving this patch.

  This patch also fixes a bug with the usage of the OBJ-MULTIPLE flag to
  find multiple dialogs with the same call-id.  Since the callback
  function was returning (CMP_MATCH | CMP_STOP) only the first item
  found was being returned.  I fixed this by making a new callback
  function for finding multiple dialogs that only returns (CMP_MATCH)
  on a match allowing for multiple items to be returned.

  Review: https://reviewboard.asterisk.org/r/776/
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@279569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c
channels/sip/include/reqresp_parser.h
channels/sip/include/sip.h
channels/sip/reqresp_parser.c