On 8/19/06, Andrei Pelinescu-Onciul <andrei(a)iptel.org> wrote:
On Aug 17, 2006 at 19:37, Curt Moore
<tgrman21(a)gmail.com> wrote:
Hello all.
I've been doing some experimentation with both CVS HEAD and 0.9.6 of
SER and version 1.1.0 of OpenSER.
It appears that there is a TCP bug in SER which has been fixed in
OpenSER. I've seen various posts in the past on the serdev and the
serusers lists regarding this issue but with no definitive solution.
Are there any plans to merge some of the great work of the OpenSER
developers back into SER, such as this fix for TCP?
The great work in openser tcp is just applying selective patches from
ser. Looking through the cvs log there are only 2 small changes that do not
come from ser: bind before connect (with debatable usefulness, you can
make a case for it or against it and I am on the "against" side) and the
possibility to set the timers individually for each tcp connection (they
claim it helps for nat traversal and usrloc (?)).
Disclaimer: I do not want to imply that openser developer do not do
great work :-) It just happens that tcp is the wrong example, since
99.9999% from the code is from ser.
I did not want that to sound like I meant that the SER developers are
not also doing a great job. :-)
Below is the logfile I receive when I try to place a call from a UDP
to a TCP device using CVS HEAD of SER. The same routing logic in
ser.cfg works perfectly in openser.cfg.
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: ERROR:
tcp_blocking_connect: poll error: flags 18
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: ERROR:
tcp_blocking_connect: SO_ERROR (113) No route to host
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: ERROR: tcpconn_connect:
tcp_blocking_connect failed
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: ERROR: tcp_send: connect
failed
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: msg_send: ERROR: tcp_send
failed
Aug 17 19:03:33 testbox /usr/sbin/ser[32534]: ERROR: t_forward_nonack:
sending request failed
Aug 17 19:03:33 sg1test /usr/sbin/ser[32534]: ERROR: sl_reply_error
used: Unfortunately error on sending to next hop occurred (477/SL)
This looks like a tcp connect error and not like a ser bug.
Are you sure the ip routing is properly set on your host?
Are you sure this is not the other way arround (openser binds on an
interface before connecting and that's how you could get this error, ser
on the other hand doesn't do this, so it should work in all the cases)?
This could explain what's going on. The server does have 2 interfaces
but I'm only binding to 1 of the IP addresses, which happens to be a
virtual IP address on the interface, if that matters. On that IP I'm
using both TCP and UDP on port 5060.
Could you send me ser.cfg and a detailed description on what exactly are
you doing when you get this error (so that I can reproduce it myself)?
The whole ser log, a packet dump (both tcp and udp) and the outputs of
/sbin/ifconfig and /sbin/route will also help.
My setup is a SER server acting as a UDP/TCP SIP proxy, which relays
SIP messages, via dispatcher, to a farm of Asterisk servers using SIP
UDP. If a TCP UA sends a message to SER, it will correctly forward it
using UDP to one of the Asterisk servers. The problem arises whenever
Asterisk sends a SIP UDP message back to SER for forwarding to the TCP
UA. The problem is that upon trying to relay the TCP message, SER will
produce the TCP errors described above. It sounds like the binding
issue you described above.
I'll send the debug info off-list.
Thanks for your help.
-Curt