Hi,
 
I'm having problems getting SER to (loose) route requests from UDP to TCP. I'm not sure if the UA is at fault here or some SER config issue.
 
SER receives an INVITE over TCP, record_route() is called and then the request is relayed via UDP (t_relay_to_udp) to the UA. The INVITE relayed to the UDP UA now has 2 Record-Route headers added by SER. One has the transport=tcp  parameter.
 
Record-Route: <sip:xx.xx.xx.xx;r2=on;ftag=xyz;lr=on>
Record-Route: <sip:xx.xx.xx.xx;transport=tcp;r2=on;ftag=xyz>
 
When the UA sends the BYE to SER, it has the 2 Route headers like so (on a single line):
 
Route: <sip:xx.xx.xx.xx;r2=on;ftag=xyz;lr=on>,<sip:xx.xx.xx.xx;transport=tcp;r2=on;ftag=xyz;lr=on>
 
The SER script simply calls t_relay() in the loose_route section of the script.
 
I expected t_relay() to relay the BYE via TCP, since the Route header has transport=tcp, but it sends the BYE via UDP instead.
 
Anyone seen this problem before? Do I need to check for transport=tcp and call t_relay_to_tcp, rather than using t_relay after loose_route()?
 
Mark