El Domingo, 2 de Marzo de 2008, Juha Heinanen escribió:
Iñaki Baz Castillo writes:
Maybe OpenSer tries first with TCP (since the incoming INVITE uses TCP) and if it can't establish a connection then it tries UDP? Is it RFC 3261 mandatory?
inaki,
how to select ip/port/transport of next hop is described in
J. Rosenberg and H. Schulzrinne, ÈSession initiation protocol (SIP): locating SIP servers,É RFC 3263, Internet Engineering Task Force, June 2002.
Thanks Juha, now I understand that the only way OpenSer to set TCP for the destination is by adding a RURI parameter "transport=tcp".
In fact, if I do:
force_send_socket(tcp:MY_IP:5060); $rd = "ASTERISK_MEDIA_IP"; t_relay(); exit;
When I receive an INVITE via TCP OpenSer forwards it via UDP, the only way to force TCP is by using:
add_uri_param("transport=tcp"); $rd = "ASTERISK_MEDIA_IP"; t_relay(); exit;
So it makes sense tieh the RFC you told me:
-------------------------------------------------------------------- 4.1 Selecting a Transport Protocol
First, the client selects a transport protocol.
If the URI specifies a transport protocol in the transport parameter, that transport protocol SHOULD be used.
Otherwise, if no transport protocol is specified, but the TARGET is a numeric IP address, the client SHOULD use UDP for a SIP URI, and TCP for a SIPS URI. --------------------------------------------------------------------
Thanks a lot, I'm starting testing SIP TCP now and have not experience yet.
Best regards.