[OpenSIPS-Devel] Limitations of dialog module

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Aug 4 14:22:20 CEST 2009


Hi Iñaki,

Iñaki Baz Castillo wrote:
> 2009/8/4 Dan Pascu <dan at ag-projects.com>:
>   
>> The easiest way to fix them would be for the dialog module to keep around
>> "virtual dialogs", for as long as it's in a provisional state. Such a virtual
>> dialog will keep track of a branch and when a final reply is received, it will
>> destroy all of them except for the one on the branch that got the final 200 OK
>> reply, which will become the real dialog from that point on. This way each
>> branch can live on its own and have the CSeq updated independently of the
>> others.
>>     
>
> That makes sense but, what would occur in the exotice RFC3261 case in
> which  two (or more) 200 OK replies are received at the same time?
> AFAIK for now OpenSIPS terminates the INVITE transaction (not 100%
> true since it matches the following ACK) when the first 200 arrives,
> so the second 200 is bypassed stateless to the UAC.
>   
Not true.

After the first 200 OK, the transaction is completed and moved in wait 
state to catch any other delayed replies. If more 200 OK are  received 
in the mean while, all of them will be forwarded statefully  to the 
caller and let the caller to decide which to accept and which to deny.

Of course, if there is a very late 200 OK and the transaction was 
already deleted (the wait state is by default 5 secs) the stateless 200 
OK will be dropped.

Regards,
Bogdan




More information about the Devel mailing list