[reSIProcate] BasicCall TCP Transport

Alan Hawrylyshen alan at jasomi.com
Mon Sep 27 08:42:01 CDT 2004


On 24-Sep-04, at 12:29 PM, Samphel Norden wrote:

> This is regarding BasicCall sample code. When trying to add TCP 
> transport ("stackUac.addTransport (TCP, 5060)") It tries to create a 
> TCP connection and then later on looks for a matching UDP connection 
> (The error comes in the transportselector.cxx file). Am I suppose to 
> specify TCP transport in some other file and how do I force the stack 
> to stick to TCP?
> Thanks,
> Sam

Sam;

A common issue with this is when either the RURI to tried to use or the 
remote-target (as provided in provisionals from the other party) are in 
fact URIs that are routed over UDP.

To be sure, make sure you are using the latest reSIProcate from 
Subversion, then, run your test program with logging set to 
resip::Log::Stack.

Check carefully all the output from the DnsResolver.  You might find 
that the Stack thinks UDP is the correct way to transport your message.

The presence of NAPTR, and SRV records for your target will also 
strongly influence (ok, control) the stack's choice.

Consider the following RURIs:
	
sip:alice at example.com  (will follow RFC3263, might select UDP if there 
is no TCP SRVs/NAPTRs)
sip:alice at example.com;transport=tcp (will use TCP), but ACK (for IT) 
might use UDP if remote target ctc is silly.
sip:alice at 10.1.2.3 (will use UDP to port 5060)
sip:alice at example.com:5060 (UDP)


Your best best for now might be to explicitly ensure that there is a 
URI parameter 'transport=tcp'.
If you can see from the DnsResults and TransportSelector that the stack 
has chosen UDP when TCP makes more sense (eg. TCP is a valid alternate, 
but there is no UDP tranport), please post the log and I'll take a 
look)


Thanks

Alan Hawrylyshen
a l a n a t  j a s o m i d o t c o m




More information about the resiprocate-devel mailing list