JR,
Maybe for subsequent routes you'd like to use $oU (original URI Username) that is the original number you intend to route.
Rgds, Uriel
On Thu, May 27, 2010 at 1:23 PM, JR Richardson jmr.richardson@gmail.comwrote:
On Thu, May 27, 2010 at 10:09 AM, Henning Westerholt henning.westerholt@1und1.de wrote:
On Thursday 27 May 2010, JR Richardson wrote:
i assume according your description that the GW in question don't send
a
provisional response. Then the tm module should generate a internal
408
after fr_timer interval which you could then catch in a failure_route.
Do
you armed the appropriate failure_route in your cfg?
Yes, the gateway is totally off-line so no response comes back. I do have failure_route in the config. This is related to another active post from me "Carrierroute failover domain not working" so I'm sure this is a redundant post, but your input is appreciated.
The pastebin has my kamailio.cfg, the kamailio debug trace and the error received by sipp and the ngrep capture.
Hi JR,
from the logs:
INFO:carrierroute:cr_do_route: rewrite_uri_recursor doesn't complete, uri
65,
carrier 1, domain 2
this means that there was an error during the invocation of the cr_route
in
the failure_route[2]. Can you check if you've a rule with domain 2 in
your
carrierroute table?
And you probably also want to use revert_uri() and append_branch(); in
the
failure_route before respectivly after the new cr_route, otherwise you'll probably run in to problems as well. I just noticed that there is an
error in
the first example in the cr docs, i'll fix it now. The second example
uses
this two commands.
Regards,
Henning
Ok, so I think we are on to something, in the first transaction the uri was 3465@ which matched the database entry 34 in carrier 1 domain 1, but I also had strip_prefix-2 in there as well, so when the call goes to the failure route the uri changes to 65@, which did not have a match in carrier 1 domain 2.
So to test, I took the prefix matching and the strip_prefix out and simplified the database entry to this:
carrierroute table: carrier 1, domain 1, host A carrier 1, domain 1, host B carrier 1, domain 2, host C carrier 1, domain 2, host D
carrierfailureroute table: carrier 1, domain 1, host A, next domain 2 carrier 1, domain 1, host B, next domain 2 carrier 1, domain 2, host C, next domain 1 carrier 1, domain 2, host D, next domain 1
So now I see a call come in to kamailio and if host A & B are off-line, I see in the debug the failure_route try to send the call to host C & D, but I still have an error because I don't have a proper branch route setup, and this is confusing, I don't understand what that means? Here is the error:
The uri is 3477@, call come in and hits the route[2], then goes to failure_route.
May 27 11:04:04 [25716] INFO:carrierroute:cr_do_route: uri 3477 was rewritten to sip:3477@10.10.14.104 sip%3A3477@10.10.14.104, carrier 1, domain 2 May 27 11:04:04 [25716] ERROR:tm:t_forward_nonack: no branch for forwarding May 27 11:04:04 [25716] ERROR:tm:w_t_relay: t_forward_nonack failed May 27 11:04:04 [25716] ERROR:tm:t_forward_nonack: no branch for forwarding May 27 11:04:04 [25716] ERROR:tm:w_t_relay: t_forward_nonack failed
Here is the config snip:
route[2] { if(!cr_route("1", "1", "$rU", "$rU", "call_id")){ sl_send_reply("403", "Not allowed"); } else { t_on_failure("2"); t_relay(); } }
failure_route[2] { revert_uri(); if (t_check_status("404|408|5[0-9][0-9]")) { if(!cr_route("1", "2", "$rU", "$rU", "call_id")){ t_reply("403", "Not allowed"); } else { t_relay(); } } }
So I guess I'm stuck on the error "ERROR:tm:t_forward_nonack: no branch for forwarding". I'm not sure how to setup a branch route from the failure route.
Thanks
JR
JR Richardson Engineering for the Masses
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users