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:[EMAIL PROTECTED]> q=10 Oct 13 16:10:06 ser1 openser[5413]: DEBUG:uac_redirect:shmcontact2dset: adding contact <sip:[EMAIL PROTECTED]> 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

_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to