Hello,
On 06/11/14 09:38, Dan Christian Bogos wrote:
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!
looks like the overall buffer for contacts
in redirect is 512 in size,
perhaps same value from early beginnings. MAX_REDIRECTION_LEN in
config.h needs to be changed to larger value -- should 1024 be enough?
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda -
http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Nov 24-27, Berlin -
http://www.asipto.com