[Devel] get_redirects and acc logging
Norman Brandinger
norm at goes.com
Thu Oct 13 23:56:44 CEST 2005
The latest CVS version of openser crashes consistently when trying to
redirect a call.
Below was my original configuration:
modparam("uac_redirect", "default_filter", "accept")
modparam("uac_redirect","acc_function","acc_db_request")
modparam("uac_redirect","acc_db_table","acc")
failure_route[] {
#------------------------------------------
# Moved Temporarily
#------------------------------------------
if (t_check_status("302")) {
get_redirects("*", "Redirected");
t_relay();
return;
};
}
The above configuration produced the following crash. Note that we
added the last DEBUG line in an attempt to isolate what subroutine call
failed.
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:get_redirect:
resume branch=0
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:get_redirect:
checking branch=0 (added=0)
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:get_redirect:
branch=0 is a redirect (added=0)
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:sort_contacts:
<sip:8103 at ser1.goes.com> q=10
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:shmcontact2dset:
adding contact <sip:8103 at ser1.goes.com>
Oct 13 16:10:06 ser1 openser[5413]: DEBUG:rd_funcs:shmcontact2dset:
about to call rd_acc_fct()
Oct 13 16:10:06 ser1 openser[5413]: parse_headers: flags=58
Oct 13 16:10:06 ser1 openser[5411]: child process 5413 exited by a signal 11
Oct 13 16:10:06 ser1 openser[5411]: core was generated
Oct 13 16:10:06 ser1 openser[5411]: INFO: terminating due to SIGCHLD
Oct 13 16:10:06 ser1 openser[5416]: INFO: signal 15 received
Oct 13 16:10:06 ser1 openser[5415]: INFO: signal 15 received
Oct 13 16:10:06 ser1 openser[5414]: INFO: signal 15 received
Oct 13 16:10:06 ser1 openser[5412]: INFO: signal 15 received
Oct 13 16:10:06 ser1 openser[5417]: INFO: signal 15 received
It appears that there is a failure when calling rd_acc_fct().
I then tested with the setup below:
#modparam("uac_redirect", "default_filter", "accept")
#modparam("uac_redirect","acc_function","acc_db_request")
#modparam("uac_redirect","acc_db_table","acc")
failure_route[] {
#------------------------------------------
# Moved Temporarily
#------------------------------------------
if (t_check_status("302")) {
get_redirects("*", "Redirected");
t_relay();
return;
};
}
Produces this error:
ERROR:acc:acc_log_request: buffer to small
Lastly, I tested with a get_redirect("*") and no error or crash was
produced.
Near the top of my config file, I have the following code:
#-------------
# Accounting
#-------------
if (is_method("BYE|CANCEL")) {
setflag(FLAG_ACC);
setflag(FLAG_ACC_DB);
} else if (is_method("INVITE")) {
setflag(FLAG_ACC);
setflag(FLAG_ACC_DB);
setflag(FLAG_MISSED_CALL);
};
I thought that perhaps the FLAG_ACC_DB wasn't being set correctly in the
failure_route. I added setflag(FLAG_ACC_DB); in the failure_route, just
before the call to get_redirects() and openser still crashed.
While researching this problem, I found that rd_acc_fct is passing 3
parameters while acc/acc.c: acc_db_request is looking for 5 parameters
and acc/acc.c: act_log_request is looking for 4 parameters.
Regards,
Norm
More information about the Devel
mailing list