Re: [reSIProcate] Forked INVITEs
Chris -
The call flow you're seeing (through the INVITEs and CANCELs anyhow)
is correct.
When a proxy forks it is only going to forward one final response
(when that response
is non-2xx) to an INVITE. It's possible to get more than one 2xx, but
that's an edge case
that is made as unlikely as possible by the rules in section 16 of
3261. You will never
see both a 2xx final response and some other non-2xx final response.
Now, for the BYE question. The protocol is doing the right thing
given that a BYE was
sent, but sending the BYE was (probably) silly. Are you using DUM or
the stack directly
for this flow? Were the 180s using the 100rel extension?
RjS
On Jan 16, 2006, at 11:49 AM, Christian_Gavin@xxxxxxxxxxxx wrote:
Hi,
I am testing the following scenario with resip 0.9 on WinXP. Server
is SER
0.9 on Solaris.
One client is registered as sip:chris@xxxxxxxxxx (server.com is a
placeholder for the SIP server I am using). Let's call this client A.
Two other clients are registered as sip:chris2@xxxxxxxxxx (let's
call these
client B and client C). Client A calls B and C and then cancels the
INVITE:
- chris INVITEs chris2
- both clients registered under chris2 (client B and C) ring, send 180
Ringing to server which is turn sends both 180 Ringing to chris
- chris cancels the INVITE
- chris receives a 200 Canceling from the server
- clients B and C receive a Cancel
- B and C send a 200 OK in response to the Cancel and a 487
Request
Terminated to the server
- the server sends ACKs to B and C
- chris receives a 487 Request Terminated from the server (with
same To:
and From: tags as specified in the first 180 Ringing coming from
client B)
- chris ACKs the 487 Request Terminated
At this time, B and C are done with canceling. However, chris
(client A)
has only received one 487 Request Terminated from the server,
corresponding
to the call leg A <-> B. Client A thinks the extra call leg created by
forking (A <-> C) still exists, and 20 seconds later, reSIProcate
on client
A sends a BYE to client C to terminated this call leg. Client C
replies
with a 481 Call / Transaction Does Not Exist.
Shouldn't reSIProcate automatically close all call legs once the
initial
INVITE has been canceled? Or should the server send an extra 487 to
chris
to indicate that this second call leg was terminated?
Thanks,
Christian
_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@xxxxxxxxxxxxxxxxxxx
https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel