[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