El Wednesday 18 June 2008 09:42:57 Ranjith Reddy V escribió:
> Hi ALL,
>
> What should be the behavior of UAC, if UAS sends response in different
> transport than the request?
>
> For example UAC has sent INVITE on TCP and received 200 OK for that on UDP.
> The INVITE via header starts with SIP/2.0/TCP and for 200 OK SIP/2.0/UDP.

AFAIK this is illegal:


RFC 3261:  http://tools.ietf.org/html/rfc3261#section-18.1.2

  18.2.2 Sending Responses
 
         If the "sent-protocol" is a reliable transport protocol such as
         TCP or SCTP, or TLS over those, the response MUST be sent using
         the existing connection to the source of the original request
         that created the transaction, if that connection is still open.
         This requires the server transport to maintain an association
         between server transactions and transport connections.  If that
         connection is no longer open, the server SHOULD open a
         connection to the IP address in the "received" parameter, if
         present, using the port in the "sent-by" value, or the default
         port for that transport, if no port is specified.  If that
         connection attempt fails, the server SHOULD use the procedures
         in RFC 3263 for servers in order to determine the IP address and
         port to open the connection and send the response to.


RFC 3263:   http://tools.ietf.org/html/rfc3263#section-5

  "Fails" is defined as any closure of the
   transport connection the request came in on before the response can
   be sent, or communication of a fatal error from the transport layer.

   In these cases, the server examines the value of the sent-by
   construction in the topmost Via header.  If it contains a numeric IP
   address, the server attempts to send the response to that address,
   using the transport protocol from the Via header, and the port from
   sent-by, if present, else the default for that transport protocol.
   The transport protocol in the Via header can indicate "TLS", which
   refers to TLS over TCP.  When this value is present, the server MUST
   use TLS over TCP to send the response.

   If, however, the sent-by field contained a domain name and a port
   number, the server queries for A or AAAA records with that name.  It
   tries to send the response to each element on the resulting list of
   IP addresses, using the port from the Via, and the transport protocol
   from the Via (again, a value of TLS refers to TLS over TCP).  As in
   the client processing, the next entry in the list is tried if the one
   before it results in a failure.

   If, however, the sent-by field contained a domain name and no port,
   the server queries for SRV records at that domain name using the
   service identifier "_sips" if the Via transport is "TLS", "_sip"
   otherwise, and the transport from the topmost Via header ("TLS"
   implies that the transport protocol in the SRV query is TCP).  The
   resulting list is sorted as described in [2], and the response is
   sent to the topmost element on the new list described there.  If that
   results in a failure, the next entry on the list is tried.


-- 
Iñaki Baz Castillo
[EMAIL PROTECTED]

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to