IMO it is the responsibility of each party to clean up the call when it
no longer wants to be in it. And that may vary depending on how that
party perceives what is going on.
In this case B kept its call up until it was able to see that the call
from A to C succeeded. That makes sense because if it didn't succeed
then B might want to resume the call with A. Once it discovers that, it
probably isn't going to hear any more about the status of the call to C.
The subscription will probably be terminated by A, but if not, then B
will probably want to unsubscribe. Its state is then simply that it has
A on hold. Its hard for the device to know whether to drop the call at
that point. But in a normal case where there is a user controlling B, it
can probably just wait for the user to hang up, and then send a BYE.
Meanwhile it may well get a BYE from A.
Meanwhile, A probably wants to keep the call to B until the call to C
succeeds, so it has an alternative if it doesn't. Once the call to C has
succeeded, it will probably send a final notify and end the subscription
at the same time. It presumably has no use for the call with B at that
point. So it will probably want to send a BYE.
And note that the situation may be quite a bit different if A is capable
of conferencing. If it is a conference focus, and B knows that, then B
may never go on hold, and won't want its call terminated when the refer
succeeds. Its also possible that A is capable of handling both calls,
and of conferencing them, even though B is only thinking of a transfer.
In that case, A could reinvite with sendrecv (indicating that it would
like to be taken off hold). Its not normal for the holdee to ask to be
taken off hold, but its certainly possible. If B is clever, and its user
hasn't hung up yet, then it probably ought to accept this.
Paul
Subramanian, Vijay wrote:
> What should the UA's behavior be in the following scenario? It is not clear
> whether UA should release all legs after the conversation between A and C has
> ended? Or is it the responsibility of B (or A) to send a BYE?
>
>
> A<---------UA-------------------->B (Stable Call)
>
> <---Invite (hold)
> ---200--->
>
> <---Refer (referto: C)
> --202-->
>
> ---Invite ---------->C
> <---180----
> <---200----
>
> A<------------------------------>C (Stable Call)
>
> --NOTIFY (180)->B
> --200---------------
>
> --NOTIFY (200)->B
> --200---------------
>
> <---BYE---------- C
> ---200 ------------>
>
> A<------------------------------> B (B is still onhold. At this point, should
> it be the UA's responsibility to clean up A and B legs?)
>
>
> Thanks
> Vijay
>
>
>
>
>
> _______________________________________________
> Sip-implementors mailing list
> [email protected]
> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors