[Sip-implementors] question reletade to 491 respnse processing
troy at bell-labs.com
Mon Sep 19 10:50:10 EDT 2005
neranza <neranza at batmbg.com> said:
> I have a question according to 491 processing. Let say that A and B user
> agents are in call. There is a dialog between A and B. A holds B. B
> tries to hold A and in the same time A tries to unhold B. A and B
> receives Invite request form the other side of the dialog in the moment
> when they have already sent the INVITE requests. A and B sends 491
> response to the INVITE requests that they have received. A and B starts
> retransmit timers. Retry timer of A UA fires.
> What will be the correct behavior for B.
Retry timer of A fires. A sends an an INVITE with it's
desired state, SDP/(a=sendrecv implied)
B receives the offer and builds an answer that considers
both the offer and it's desired state, SDP/a=sendonly.
B cancels it's retry timer because it's communicated what
it needed to communicate.
A respects the answer and is on-hold.
It all works out if offers are sent with the senders
desired send/recv state and answers are sent with a
state derived from the offer and the answerer's desired
Basically if the answerer receives "sendrecv", it returns
"sendrecv" or "sendonly" depending on whether or not it
wants the offerer to be on hold. Similarly, if the answerer
receives "sendonly", it returns "recvonly" or "inactive".
A UA has to keep state of whether it's user has requested
a hold, not whether the other side has.
More information about the Sip-implementors