[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