[OpenSIPS-Users] Problem with t_relay after

Chevio emercado at rapidlink.com
Mon Mar 9 18:31:09 CET 2009


Hi All, 

I  am having a weird problem with t_relay when calling it from route[2] in
the script below.

The problem that I am experiencing is that it does not relay the message to
the modified destination uri host/port. Instead it relays the message to the
modified uri/host/port from route[1]. 

I initially thought the problem was with my tncgw_route custom module that
modifies the msg->new_uri
but after some testing and debugging I realized that if I modify the
destination uri host/port with rewritehostport functino on route[2]
t_relay() is also failing (sending the message to the modified uri in
route[1]).

Then I decided to try t_relay("udp:host:port") instead of t_relay() on
route[2] and it worked fine. So the question is why does t_relay() is not
picking the msg->new_uri when called from route[2]?.  

route[1] {
	setflag(22);
	# send it out now; use stateful forwarding as it works reliably
	# even for UDP2TCP
	
	if (method=="INVITE"){
		t_on_failure("1");
		t_on_reply("1");

		$var(route_result)=tncgw_route("1");
		tncgw_cdr();
		
		if($var(route_result)==-404){
			xlog("Invalid Route send 404 \n");
			sl_send_reply("404","Invalid Route");
			tncgw_releasecdr("404","SB Invalid Route");  
			exit;
			
		}

		if($var(route_result)==-503){
			xlog("Congestion, send 503 \n");
			sl_send_reply("503","No route available for destination");
			tncgw_releasecdr("503","SB No route available for destination");  
			exit;
			
		}

		if($var(route_result)<0){
			xlog("Call not routed\n");
			sl_send_reply("503","No route available for destination");
			tncgw_releasecdr("$var(route_result)","SB Call not routed");  
			exit;
		}


		t_relay();
		exit;	
	}
}

route[2] {
	setflag(22);
	# send it out now; use stateful forwarding as it works reliably
	# even for UDP2TCP
	t_on_reply("2");
	$var(route_result)=tncgw_route("2");
             tncgw_cdr();

	if($var(route_result)==-404){
		xlog("Invalid Route send 404 \n");
		sl_send_reply("404","Invalid Route");
		tncgw_releasecdr("404","SB Invalid Route");  
		exit;
	}

	if($var(route_result)==-503){
		xlog("Congestion, send 503 \n");
		sl_send_reply("503","No route available for destination");
		tncgw_releasecdr("503","SB No route available for destination");  
		exit;
	}

	if($var(route_result)<0){
		xlog("Call not routed\n");
		sl_send_reply("503","SB No route available for destination");
		tncgw_releasecdr("$var(route_result)","SB Call not routed");  
		exit;
	}

	if (!t_relay()){
	
		sl_reply_error();

	};
}

failure_route[1] {
	setflag(22);
	if(status=~"3[0-9][0-9]|4[0-9][0-9]|5[0-9][0-9]|6[0-9][0-9]")
	{
		/*
		if first carrier failed the call then try the next in route
		*/
		append_branch();
		route(2);
		exit;
	}
}


onreply_route[1] {
        setflag(22);
	if (status=~"3[0-9][0-9]|4[0-9][0-9]|5[0-9][0-9]|6[0-9][0-9]") {
		# Response from carrier
		tncgw_releasecdr("$rs","From Carrier");
	}

}

I appreciate any help.

Thank you.

Chevio

-- 
View this message in context: http://n2.nabble.com/Problem-with-t_relay-after-tp2450413p2450413.html
Sent from the OpenSIPS - Users mailing list archive at Nabble.com.




More information about the Users mailing list