Переглянути джерело

acc: proper value for double representation of time for db accouting on 32b

Daniel-Constantin Mierla 9 роки тому
батько
коміт
4fe259ab61
1 змінених файлів з 4 додано та 2 видалено
  1. 4 2
      modules/acc/acc.c

+ 4 - 2
modules/acc/acc.c

@@ -443,6 +443,7 @@ int acc_db_request( struct sip_msg *rq)
 	int i;
 	int i;
 	int o;
 	int o;
 	struct tm *t;
 	struct tm *t;
+	double dtime;
 
 
 	/* formated database columns */
 	/* formated database columns */
 	m = core2strar( rq, val_arr, int_arr, type_arr );
 	m = core2strar( rq, val_arr, int_arr, type_arr );
@@ -458,8 +459,9 @@ int acc_db_request( struct sip_msg *rq)
 		VAL_INT(db_vals+(m++)) = (int)acc_env.tv.tv_usec;
 		VAL_INT(db_vals+(m++)) = (int)acc_env.tv.tv_usec;
 		i++;
 		i++;
 	} else if(acc_time_mode==2) {
 	} else if(acc_time_mode==2) {
-		VAL_DOUBLE(db_vals+(m++)) = ((double)(acc_env.tv.tv_sec * 1000)
-							+ (acc_env.tv.tv_usec / 1000)) / 1000;
+		dtime = (double)acc_env.tv.tv_usec;
+		dtime = (dtime / 1000000) + (double)acc_env.tv.tv_sec;
+		VAL_DOUBLE(db_vals+(m++)) = dtime;
 		i++;
 		i++;
 	} else if(acc_time_mode==3 || acc_time_mode==4) {
 	} else if(acc_time_mode==3 || acc_time_mode==4) {
 		if(acc_time_mode==3) {
 		if(acc_time_mode==3) {