[OpenSIPS-Devel] Limitations of dialog module

Bogdan-Andrei Iancu bogdan at voice-system.ro
Thu Sep 10 10:59:20 CEST 2009


Dan Pascu wrote:
>>> This would simplify all this stuf a lot. Also, who in the world wants
>>> to receive two 200 for an INVITE? XDDD
>>>
>>>       
>> I agree but what should happen in the following scenario:
>>
>> 1) UAC sends INVITE
>>
>> 2) proxy forks the call to UAS1 and UAS2
>>
>> 3) both UAS1 and UAS2 send 200 OK in the same time
>>
>> 4) right now proxy will send both 200 OK to UAC
>>
>> 5) UAC will ACK both, keep one and BYE the other
>>
>>
>> So, if we simply discard the second 200OK, what will happen with UAC2?
>> it will think it is in a call... waiting for ACK......
>>     
>
> I agree. The proxy should not discard anything. From UAC2's  
> perspective the call is there, it only misses an ACK. It will keep  
> retransmitting the 200 OK, until it decides to give up, unless is an  
> UAC that was configured to ignore the missing ACK in which case it  
> will consider that it has the call anyway and will act accordingly.
>
>   
>> At a moment I had in mind the option for the dialog module to ACK and
>> BYE all the sequential 200 OK replies without sending anything to UAC
>>     
>
> Is this easier to do than to simply forward and make clones of the  
> dialog?
>   


That was my second options - IMO, it is the cleanest and rightfull 
approach, but it raises some complexity issues (in the implementation):
    1) the entire dialog env. must be cloned (variables, flags, 
profiles, callbacks, etc)
    2) when using dialogs ID, you will end up with 2 dialogs with the 
same ID - at least the SIP siganlling of both forked dialogs will 
contain in the RR the DID of the original dialog....

Regards,
Bogdan




More information about the Devel mailing list