[Serdev] t_replicate_xxx() broken in 0.8.11

Maxim Sobolev sobomax at portaone.com
Mon Jul 7 01:25:03 UTC 2003


Folks,

Finally we decided to give 0.8.11 a try in our product, but found that 
among other more minor problems (I will report on them later), there is 
a significant one: t_replicate_udp(), which we use to keep copy of 
registration database on a spare server, doesn't work. The reginfo is 
saved in the local database just fine, but request isn't replicated and 
after sending usual 200 OK to REGISTER the SER also replies with "500 
I'm terribly sorry, server error occured (7/TM)" to the UA from which 
REGISTER was initially received. We are getting the following in the logs:

Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: BUG: get_send_socket: 
unkown proto 0
Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: BUG: get_send_socket: 
unkown proto 0
Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: ERROR: add_uac: can't 
fwd to af 2, proto 0  (no corresponding listening socket)
Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: ERROR: add_uac: can't 
fwd to af 2, proto 0  (no corresponding listening socket)
Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: ERROR: 
t_forward_nonack: failure to add branches
Jul  6 18:08:22 demo /usr/local/sbin/ser[73499]: ERROR: 
t_forward_nonack: failure to add branches

Config looks like the following (simplified):

route {
         # initial sanity checks -- messages with
         # max_forwars == 0, or excessively long requests
         if (!mf_process_maxfwd_header("10")) {
                 sl_send_reply("483","Too Many Hops");
                 break;
         };
         if (len_gt( max_len )) {
                 sl_send_reply("513", "Message too big");
                 break;
         };
         if (!(uri == myself)) {
                 sl_send_reply("403", "Call cannot be served here");
                 break;
         };
         if (method == "REGISTER") {
                 sl_send_reply("100","Trying");
         	# Ensure that all incoming messages contain auth info
         	if (!radius_www_authorize("")) {
                 	www_challenge("", "0");
                 	break;
         	};
         	save("location");
         	rewritehostport("XXX.YYY.ZZZ.WWW:5060");
         	t_replicate_udp("XXX.YYY.ZZZ.WWW", "5060");
                 break;
         };
}

Any ideas are greatly appreciated. Maybe it somehow related to the fact 
that we build SER with TCP and IPv6 disabled?

Regards,

Maxim



More information about the Serdev mailing list