Mike,
Your likely running into an issue where your changes are not actually
applied. Check out msg_apply_changes() or something of the such.
On Mon, Nov 12, 2018 at 6:52 AM Mike Montgomery <mmontgomery(a)trust-tek.com>
wrote:
We have a situation where we get a redirect from a
carrier with a list of
carriers to send the transaction to in the contact header. None of the
carriers in the contact header have q values assigned.
We have implemented our redirect handling logic using the UAC_REDIRECT
module (get_redirects()) with help from TM module (t-load_contacts(),
t_next_contact()). (failure_route code is at bottom of this note)
We find that when we receive a contact header with q values, we can launch
requests serially using t_next_contact() and individually work through the
contact list until we get a positive response. When we get a redirect with
no q values in the contact header we find that all contacts get loaded and
launched in parallel.
Although not stated in the documentation, it appears that in order to
implement serial contact redirect handling, q values must be present in the
contact header. Based on this assumption, and knowing that the redirecting
carrier cannot include q values, we have attempted to modify the contact
header and find that we are unable to add q values to the contact header.
We have attempted without success to use remove_hf("Contact”) followed
by append_hf("Contact: $(avp(contact)) \r\n”); where $(avp(contact)) is the
avp where we have rewritten the contact header to include q values.
Any guidance on how to handle this issue is appreciated.
_________________________________________________________-
Our failure route code:
if (t_check_status("3[0-9][0-9]")) {
xlog("L_INFO", "----> REDIRECT Contact Header -->
$T_rpl($ct) --- Method $rm --- From $T_req($fu) --- To $T_req($tu) ---
Destination $T_req($du) \n");
get_redirects("*:*");
if (!t_load_contacts()) {
xlog("L_INFO", "-t_load_contacts() FAILED
/n");
};
xlog("L_INFO", "####->LOAD CONTACT LIST
$xavp(tm_contacts[0]=>uri) \n");
if (t_next_contacts()) {
xlog("L_INFO", "-t_next_contact() loaded
successfully /n");
xlog("L_INFO", "####-> NEXT CONTACT LIST
$xavp(tm_contacts[0]=>uri) \n");
};
t_on_failure("serial");
if(t_relay()){
xlog("L_INFO","----->Relayed in MANAGE_FAILURE ---
Method $rm --- Contact Header $ct \n");
};
exit;
} else {
xlog("L_INFO","-----> NO REDIRECT --- Method $rm ---
Contact Header $ct \n");
exit;
}
failure_route["serial"] {
xlog ("L_INFO", "Entered failure_route(serial) /n");
if (t_check_status("3[0-9][0-9]")) {
xlog("L_INFO", "----> DOUBLE REDIRECT Contact Header
-->
$T_rpl($ct) --- Method $rm --- From $T_req($fu) --- To $T_req($tu) ---
Destination $T_req($du) \n");
$xavp(tm_contacts[*]) = $null;
xlog("L_INFO", "XXX-> tm_contacts reset to Null
$xavp(tm_contacts[0]=>uri)\n");
get_redirects("*:*");
if (!t_load_contacts()) {
xlog("L_INFO", "-t_load_contacts() FAILED
/n");
};
xlog("L_INFO", "####-> LOAD 2 CONTACT LIST
$xavp(tm_contacts[0]=>uri) \n");
}
if (!t_next_contacts()) {
exit;
}
xlog("L_INFO", "-t_next_contact() loaded successfully /n");
xlog("L_INFO", "####-> NEXT CONTACT LIST
$xavp(tm_contacts[0]=>uri) \n");
t_on_failure("serial");
if(t_relay()){
xlog("L_INFO","----->Relayed in failure_route(serial) ---
Method $rm --- Contact Header $ct \n");
};
}
Best Regards,
Mike Montgomery
Principal, Trusted Technical Services, Inc.
o - 919 924 4703 x3000
m - 919 539 6133
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users(a)lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users