Fix dialog matching in the SIP distributor.
authorMark Michelson <mmichelson@digium.com>
Wed, 28 Aug 2013 15:43:15 +0000 (15:43 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 28 Aug 2013 15:43:15 +0000 (15:43 +0000)
commita181544299291664b241ae09be3092be67467546
tree118bd2fbc03439b2bbdf5038a3386986223d1c7d
parent451993f4f57331fae84a9c04b31fd5663ccfc593
Fix dialog matching in the SIP distributor.

Dialog matching is performed in the distributor for the sole
purpose of retrieving an associated serializer so the request
may be serialized.

This patch fixes two problems.

First, incoming CANCEL requests that had no to-tag (which really
should be *all* CANCEL requests) would not match with a dialog.
An earlier bug fix to deal with early CANCEL requests would result
in the CANCEL being replied to with a 481. The fix for this is to
find the matching INVITE transaction and get the dialog from that
transaction.

Second, no SIP responses were matching dialogs. This is because we
were inverting the tags that we were passing into PJSIP's dialog
finding function. This logic has been corrected by setting local
and remote tag variables based on whether the incoming message is
a request or response.
........

Merged revisions 397854 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397855 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_pjsip/pjsip_distributor.c