On 06.10.10 11:42, Raphael Coeffic wrote:
are you saying that it does not work if it receives an early dialog
reply (eg. 180 or 183) from many UAs?  if not, then i consider it a
bug in sems.


What will happen at the moment is that all provisional replies will be passed to the session, whereby the first positive final reply will lock the dialog. Any further reply (any type; containing either another to-tag, or no to-tag) will be simple ignored, thus causing the remote UAS' ACK timer to expire (or PRACK timer, if PRACK is used).

I won't play with words, but I do not consider it to be a bug, as I never expected the code to work differently. But I will second you in considering that SEMS should handle the case more nicely.

Now the question is: how should this be handled:
- first possibility: SEMS should wait for a positive final reply and BYE the other dialogs. The issue is that some phones do not support BYE in early state. CANCEL is not an option in such a case, as it would cancel all the dialogs resulting from the forking (could be confusing for some UAs). - second possibility: SEMS should create a new dialog/session for each different to-tag, and let the app choose which dialog(s) to pick. This is much more challenging, as we have to either: support multiple dialog per session, or create sessions on the fly and connect them back to the caller session or conference status.

At the end, we might even need both possibilities, to be able cover all types of applications.


After checking the SIP RFC, it seems to me that we only need the first possibility. In fact, when a forking proxy sees the first 2xx reply, it will send a CANCEL to all other branches, thus creating some sort of a race condition, as it is also forced to relay other 2xx replies back.

This means that the only additionnal 2xx that we will get are those which were sent before the CANCEL has been received. This is a quite tight condition, which should not happen all to often. This also means that the issue with BYEs sent for early dialog falls apart, as the forking proxy will send CANCELs it self to each branch.

I created issue 51 for this purpose (https://bugtracker.iptel.org/view.php?id=51).

Cheers
Raphael.


_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems

Reply via email to