[OpenSIPS-Users] is this a bug? acc module setting empty string for unset fields
Răzvan Crainea
razvan at opensips.org
Mon May 10 07:31:22 EST 2021
Hi, Kingsley!
No, this is not a bug, it's exactly as it has been developped [1].
[1] https://opensips.org/docs/modules/3.1.x/acc.html#overview: If a
value is not present in the request, the empty string is accounted instead.
Best regards,
Răzvan Crainea
OpenSIPS Core Developer
http://www.opensips-solutions.com
On 4/29/21 4:21 PM, Kingsley Tart wrote:
> Hi,
>
> This is with OpenSIPS 3.1.
>
> I have extra DB fields defined with "extra_fields", and this was
> working fine until I tried to turn on multi-leg accounting so that I
> could log details of failures, eg endpoint address, SIP response etc.
>
> I have a failure route set up to try the next endpoint, eg when I get
> an INVITE:
>
> t_on_failure("next_host");
>
> and:
>
> failure_route[next_host] {
> # dialog flag 1 means a CANCEL has been received
> if (!is_dlg_flag_set(1)) {
> $avp(endpoint) = NULL;
> if ($avp(endpoint)) {
> t_on_failure("next_host");
> acc_new_leg();
> sethost($avp(endpoint));
> route(numheaders_set_for_endpoint);
> route(relay);
> exit;
> }
> send_reply(503, "Service unavailable");
> exit;
> }
> }
>
>
> The problems started when I added acc_new_leg() into the failure route.
> I've set this up so that the first few endpoints fail so that I can see
> what is happening.
>
> The problem is that when the BYE is received, I get the following
> errors:
>
> CRITICAL:db_mysql:wrapper_single_mysql_real_query: driver error (1366): Incorrect integer value: '' for column `opensips`.`acc`.`t_ringing` at row 1
> ERROR:core:db_do_insert: error while submitting query
> ERROR:acc:acc_db_request: failed to insert into acc table
>
> The problem here is that t_ringing is an integer column (which defaults
> to NULL) so it can't take a string, and OpenSIPS is trying to set the
> value to an empty string.
>
> I tried specifically setting $acc_extra(t_ringing) = NULL but this made
> no difference.
>
> I tried moving t_ringing into "leg_fields" (needed to do that anyway)
> and then setting $acc_leg(t_ringing) in the script when needed, but the
> same problem persisted.
>
> These are the DB actions that OpenSIPS performs on the acc and
> missed_calls tables:
>
> Prepare insert into missed_calls (method,from_tag,to_tag,callid,sip_code,sip_reason,time,srcAddr,numFrom,numTo,numPAI,numPPI,hdrPrivacy,numRPID,hdrRPIDprivacy,hdrRPIDscreen,t_start,t_ringing,t_progress,t_answer,t_clear,dstAddr,setuptime,created ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
>
> Execute insert into missed_calls (method,from_tag,to_tag,callid,sip_code,sip_reason,time,srcAddr,numFrom,numTo,numPAI,numPPI,hdrPrivacy,numRPID,hdrRPIDprivacy,hdrRPIDscreen,t_start,t_ringing,t_progress,t_answer,t_clear,dstAddr,setuptime,created ) values ('INVITE','2007660754','z9hG4bK048.2ac41536.0','1619701113-752375-609080253','401','Unauthorized',TIMESTAMP'2021-04-29 13:58:33','88.151.41.21','00353*9051','01743850850','0018001231234','118118','none','003539994444',NULL,NULL,'1619701113',NULL,NULL,NULL,'1619701113','88.151.41.23',0,TIMESTAMP'2021-04-29 13:58:33')
>
> Prepare insert into acc (method,from_tag,to_tag,callid,sip_code,sip_reason,time,srcAddr,numFrom,numTo,numPAI,numPPI,hdrPrivacy,numRPID,hdrRPIDprivacy,hdrRPIDscreen,t_start,t_ringing,t_progress,t_answer,t_clear,dstAddr,setuptime,created,duration,ms_duration ) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
>
> Execute insert into acc (method,from_tag,to_tag,callid,sip_code,sip_reason,time,srcAddr,numFrom,numTo,numPAI,numPPI,hdrPrivacy,numRPID,hdrRPIDprivacy,hdrRPIDscreen,t_start,t_ringing,t_progress,t_answer,t_clear,dstAddr,setuptime,created,duration,ms_duration ) values ('INVITE','2007660754',NULL,'1619701113-752375-609080253','503','Service Unavailable',TIMESTAMP'2021-04-29 13:58:33','88.151.41.21','00353*9051','01743850850','0018001231234','118118','none','003539994444',NULL,NULL,'1619701113',NULL,NULL,NULL,'1619701113','88.151.41.23',0,NULL,0,0)
>
> Query insert into acc (method,from_tag,to_tag,callid,sip_code,sip_reason,time,srcAddr,numFrom,numTo,numPAI,numPPI,hdrPrivacy,numRPID,hdrRPIDprivacy,hdrRPIDscreen,t_start,t_ringing,t_progress,t_answer,t_clear,dstAddr,setuptime,created,duration,ms_duration ) values ('INVITE','2007660754','','1619701113-752375-609080253','503','Service Unavailable','2021-04-29 13:58:33','88.151.41.21','00353*9051','01743850850','0018001231234','118118','none','003539994444','','','1619701113','','','','1619701113','88.151.41.24',0,NULL,0,0)
>
> Is this a bug?
>
> I would prefer any fields not set in my script to be either set as
> NULL, or perhaps even better not even mentione in the query at all.
>
>
More information about the Users
mailing list