On Wed, Oct 31, 2012 at 3:03 PM, Dan Pascu <d...@ag-projects.com> wrote:
>
> On 29 Oct 2012, at 12:11, Bogdan-Andrei Iancu wrote:
>
>> Hi Saul,
>>
>> We were thinking at re-INVITE pinging from OpenSIPs level towards the caller 
>> and callee. There will be 2 modes (at least this is the current plan).
>>    1) remember all the time the last SDPs from each side and re-use them 
>> when pining the other sides (just to trick the SDP negotiation)
>>    2) start with a lateSDP negotiation on one side and do normal SDP on the 
>> other side (to avoid SDP storing), but this means at least one of the 
>> parties should support late SDP negotiations
>>    3) open to other suggestions....
>
> I think this invites trouble as it is prone to race conditions. If any of the 
> clients send a re-INVIVITE of their own while OpenSIPs does it's pinging, it 
> will fail as there is already an active unanswered re-INVITE in progress. The 
> client will be confused as it didn't send another re-INVITE itself and the 
> negative reply to its own re-INVITE will probably just prompt the client to 
> terminate the session thinking there is some issue with it.
>
> I cannot see this working without a full B2BUA, where OpenSIPs would queue 
> the client requests if there is a ping in progress and only forward them 
> after it has finished the ping transaction.

Yes, it is prone to race conditions :(
The UAS should detect such race and reply with 491 Request Pending in
order to clear out this race, but I wonder how many SIP implementation
are implementing this properly:
https://tools.ietf.org/html/rfc3261#section-21.4.27
https://tools.ietf.org/html/rfc3261#section-14.2

_______________________________________________
Devel mailing list
Devel@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

Reply via email to