Could this:
Apr 8 17:14:58 sip2 ser[17542]: BUG:t_check_status: t_pick_branch failed to get a final response in MODE_ONFAILURE
explain why this:
if (t_check_status("408") | t_check_status("404") | t_check_status("486")) { route(8); }
fails? Pertinant config follows.
-------------------------- Route logic: --------------------------
# Translate local address according to aliases table if(lookup("aliases")) { xlog("L_NOTICE", "%ci: alias lookup changed uri to %ru\n");
};
# Handle offline or non-existent users if (!lookup("location")) { xlog("L_NOTICE", "%ci: no location for %ru\n"); };
route(4); # relay with hunt on failure
--------------------------
route[4] {
# If an invitation, we want to hunt on failure if(method == "INVITE") { t_on_failure("1"); # first hunt }; if (!t_relay()) { sl_reply_error(); break; }; }
### # Hunt (8), but only on 404/408/487 route[7] { if (t_check_status("408") | # Timeout t_check_status("404") | # Not found t_check_status("486")) # Busy { route(8); } else { xlog("L_NOTICE", "%ci: r7: hunt but not 404/408/486\n"); }; }
Sorry- forgot to include these blocks. The hunt table is basically a duplicate of aliases that we use to store hunt sequence info.
### # Hunt to the next number in sequence route[8] { # See if we're in a hunt if(search("P-hint: pt-hunt")) { xlog("L_NOTICE", "wanted to hunt, but hunt already in progress\n"); break; };
# Assumes URI has been revert and prefixed with "h#-" # Also assumes t_on_failure (#+1) has been set. xlog("L_NOTICE", "%ci: r8: hunt on %ru\n"); if(lookup("hunt")) { xlog("L_NOTICE", "%ci: r8: hunt changed URI to %ru, relaying\n"); append_branch(); append_hf("P-hint: pt-hunt\r\n"); setflag(9); t_relay(); break; } else { xlog("L_NOTICE", "%ci: r8: no further hunts, giving up\n"); };
break;
}
failure_route[1] { revert_uri(); prefix("h1-"); t_on_failure("2"); route(7); } failure_route[2] { revert_uri(); prefix("h2-"); t_on_failure("3"); route(7); } failure_route[3] { revert_uri(); prefix("h3-"); t_on_failure("4"); route(7); } failure_route[4] { revert_uri(); prefix("h4-"); t_on_failure("5"); route(7); } failure_route[5] { revert_uri(); prefix("h5-"); t_on_failure("6"); route(7); } failure_route[6] { revert_uri(); prefix("h6-"); t_on_failure("7"); route(7); } failure_route[7] { revert_uri(); prefix("h7-"); t_on_failure("8"); route(7); } failure_route[8] { revert_uri(); prefix("h8-"); t_on_failure("9"); route(7); } failure_route[9] { xlog("L_ERR", "too many hunts!\n"); }
On Apr 8, 2005 5:24 PM, Daniel Poulsen dpoulsen@gmail.com wrote:
Could this:
Apr 8 17:14:58 sip2 ser[17542]: BUG:t_check_status: t_pick_branch failed to get a final response in MODE_ONFAILURE
explain why this:
if (t_check_status("408") | t_check_status("404") | t_check_status("486")) { route(8); }
fails? Pertinant config follows.
Route logic:
# Translate local address according to aliases table if(lookup("aliases")) { xlog("L_NOTICE", "%ci: alias lookup changed uri to %ru\n");
};
# Handle offline or non-existent users if (!lookup("location")) { xlog("L_NOTICE", "%ci: no location for %ru\n"); };
route(4); # relay with hunt on failure
route[4] {
# If an invitation, we want to hunt on failure if(method == "INVITE") { t_on_failure("1"); # first hunt }; if (!t_relay()) { sl_reply_error(); break; }; }
### # Hunt (8), but only on 404/408/487 route[7] { if (t_check_status("408") | # Timeout t_check_status("404") | # Not found t_check_status("486")) # Busy { route(8); } else { xlog("L_NOTICE", "%ci: r7: hunt but not 404/408/486\n"); }; }