[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