Subject: [SIP] Multiple responses for single INVITE

From: "Piotr S. Kossowski" <[email-masked]>
Date: Sat, 21 Oct 2000 02:15:34 +0200

Hello,

Section 11.3 of rfc2543bis-02 says:

"Multiple responses may arrive at the UAC for a single INVITE request, 
(...) The caller MAY choose to acknowledge or terminate the call with 
each responding UAS. To acknowledge, it sends an ACK request, and to 
terminate it sends a BYE request."

Section 4.2.5 says:

"The BYE request cannot be used to cancel branches of a parallel search,
since several branches may, through intermediate proxies, find the same
user agent server and then terminate the call.(...)"

There are two issues that are not clear for me:

1. Aren't there any discrepancy in these two sections (I mean BYE usage)?

2. If the spec says that multiple response can arrive at the UAC
   for a single INVITE, there should be at least two ways of behaviour,
   to my mind:
   a. UAC wait a while (e.g. 5 second) after getting first final response
      to INVITE. If there is no next response (from other UAS), UAC sends
      ACK to this INVITE and desctructs its socket.
      If there are responses during this time, UAC shows to user a list
      of servers that replied and allows to decide what to do with them
      (either accept (ACK) or not (BYE))
      The question is: how much time should it wait for reponses from 
      network ?

   b. UAC sends ACK imediately after getting first 200 resp, destructs
      its port and there is no chance for getting other responses
      at all (destructed port was put in Via, of course).
      We lost responses from other servers, but we are happy, beacuse
      our callee accepted a call.

   a. and b. situations are completly different. Which one is correct
   (if any is) ?

Regards,
Piotr

_______________________________________________
SIP mailing list
[email-masked]
http://lists.bell-labs.com/mailman/listinfo/sip

---

From: "Piotr S. Kossowski" <[email-masked]>
Date: Sun, 22 Oct 2000 17:55:39 +0200

Billy Biggs wrote:
> 
> Piotr S. Kossowski ([email-masked]):
>   No.  The UAC must ACK each response to the INVITE immediately to stop
> the far-end from retransmitting.  When you get a 200 response to an
> INVITE, the call is by definition already set up.
> 
>   Your implementation can do whatever it likes to indicate these
> multiple calls to the user.  That's an implementation decision.
(...) 
>   I would caution against using different ports for each request.  It's
> polite to make sure that those unfortunate enough to answer the call can

I agree, that this is a matter of implementation. However, 
a port (assigned dynamically by OS) for INVITE purpose at caller must be
ready for accepting final reponses from UASes, even if call was
established. Is it true ?
So we can say that the second, third etc. final responses from UASes
are received asynchronusly, because "main" 200 was already received
and ACKed.
On the other hand, Caller send to Callee in Contact header port,
where is able to accept Callee's Req (e.g. BYE).
So for me, it's a kind of redundancy beacause at present,
two ports are used for one call (first- invoked by OS, second - from
Connect header, usually 5060). Isn't it ?

If it's true (i'm not sure of it), port inovked for INITE purpuse
will be maintained till the end of the call. BYE from caller
will be send from this port. Please comment it. Thanks

Piotr

---

From: Billy Biggs <[email-masked]>
Date: Sat, 21 Oct 2000 00:25:06 -0500

> 1. Aren't there any discrepancy in these two sections (I mean BYE usage)?

  I don't think so.

>    for a single INVITE, there should be at least two ways of
>    behaviour, to my mind:
>
>    a. UAC wait a while (e.g. 5 second) after getting first final
>    response to INVITE. If there is no next response (from other UAS),
>    UAC sends ACK to this INVITE and desctructs its socket.  If there
>    are responses during this time, UAC shows to user a list of servers
>    that replied and allows to decide what to do with them (either
>    accept (ACK) or not (BYE)) The question is: how much time should it
>    wait for reponses from network ?

  You must ACK all responses to the INVITE.  BYE is no substitute for an
ACK.

>    its port and there is no chance for getting other responses at all
>    (destructed port was put in Via, of course).  We lost responses
>    from other servers, but we are happy, beacuse our callee accepted a
>    call.

  I would caution against using different ports for each request.  It's
polite to make sure that those unfortunate enough to answer the call can
at least get ACK'ed and then a BYE instead of having to wait for their
retransmission timer to expire.

-- 
Billy Biggs, 3Com               Email: [email-masked]
http://www.div8.net/billy/      Phone: [email-masked]