handle special case were "200 Ok" to pending INVITE never receives ACK
authorDavid Vossel <dvossel@digium.com>
Wed, 14 Jul 2010 19:51:08 +0000 (19:51 +0000)
committerDavid Vossel <dvossel@digium.com>
Wed, 14 Jul 2010 19:51:08 +0000 (19:51 +0000)
commitd1c9a4b366cea65e044736cc050c3f322019e1c7
tree002312ddfba7944381e16f9ee6b20a7c0f47d13f
parentcf7bbcc4c667a1fe907b0ec71e9a4fed506b8c23
handle special case were "200 Ok" to pending INVITE never receives ACK

Unlike most responses, the 200 Ok to a pending INVITE Request is
acknowledged by an ACK Request.  If the ACK Request for this Response is not received
the previous behavior was to immediately destroy the dialog and hangup
the channel. Now in an effort to be more RFC compliant, instead of immediately
destroying the dialog during this special case, termination is done with a BYE Request
as the dialog is technically confirmed when the 200 Ok is sent even if the ACK is
never received.  The behavior of immediately hanging up the channel remains.
This only affects how dialog termination proceeds for this one special case.

RFC 3261 section 13.3.1.4
"If the server retransmits the 2xx response for 64*T1 seconds without receiving
an ACK, the dialog is confirmed, but the session SHOULD be terminated.  This is
accomplished with a BYE, as described in Section 15."

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