[asterisk-dev] [Code Review] chan_sip: retransmit response to BYE requests until timer J expires
Olle E. Johansson
oej at edvina.net
Fri Jun 18 04:24:32 CDT 2010
17 jun 2010 kl. 14.02 skrev Klaus Darilion:
> On 04.06.2010 22:46, David Vossel wrote:
>> According to RFC 3261 section 17.2.2, which describes non-INVITE
>> server transaction, when a dialog enters the Completed state it must
>> destroy the dialog after Timer J (T1*64) fires. For a BYE
>> transaction Asterisk terminates the dialog immediately during
>> sip_hangup() when it should be waiting T1*64 ms. This results in
>> some odd behavior. For instance if Asterisk receives a BYE and
>> transmits a 200ok in response, if the endpoint never receives the
>> 200ok it will retransmit the BYE to which Asterisk responds with a
>> "481 Call leg/transaction does not exist" because the dialog is
>> already gone.
> Not sure if I understood it right - but this is not a problem at
> "dialog" layer but at "transaction" layer.
> Usually, even if the dialog is already deleted, the BYE transaction
> should still be alive and retransmit the previously sent response.
> But I guess this is a problem due to the missing usage of a SIP stack
> (with clear distinction between transaction and dialog layer)
You are right, we have no transaction support implemented.
But in some cases, the dialog structure correctly stays, but not in all cases, which is what David is trying to fix.
The dialog stays even after the call is down and there's no AST_CHANNEL any more.
More information about the asterisk-dev