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