Hey Guys,
We are facing quite often this error:
/usr/sbin/kamailio[16985]: ERROR:
<core> [dset.c:435]: print_dset(): ERROR: redirection
buffeROR:
redirection buffer length exceed
When the error is generated, there will be a missing contact in the
redirects (not to mention that Kamailio will crash in uac_redirect
for versions before 4.2.0).
Can anyone explain the nature of this buffer and whether is affected
by a single contact or all the contacts together building the final
redirect? How can we control what's in that buffer from the script?
This is our script part building the redirects, out of location
data:
"""
if(!reg_fetch_contacts("location", "$ru", "called")) {
send_reply("404", "Not Found");
exit;
}
if $(ulc(called=>count)) == 0 { # No contacts for this
user online
sl_send_reply("404", "Not found");
exit;
}
$var(i) = 0;
while($var(i) < $(ulc(called=>count))) {
$var(pathUri) =
$(ulc(called=>path)[$var(i)]{s.strip,1}{s.striptail,1}); #Strip
<> so we can apply real uri transformations
$var(newRURI) = $(ulc(called=>addr)[$var(i)]) +
";ipbxep=" + $(var(pathUri){uri.host});
if $var(i) == 0 {
$ru = $var(newRURI);
} else {
append_branch($var(newRURI));
}
$var(i) = $var(i) + 1;
}
"""
Thanks in advance for any kind of tip!
DanB