Selaa lähdekoodia

acc: don't multiply seconds with 1000 for time mode 2

- it can go out of range for 32bit arch
Daniel-Constantin Mierla 9 vuotta sitten
vanhempi
commit
0c6653bf1c
1 muutettua tiedostoa jossa 4 lisäystä ja 4 poistoa
  1. 4 4
      modules/acc/acc.c

+ 4 - 4
modules/acc/acc.c

@@ -232,6 +232,7 @@ int acc_log_request( struct sip_msg *rq)
 	int o;
 	int i;
 	struct tm *t;
+	double dtime;
 
 	/* get default values */
 	m = core2strar( rq, val_arr, int_arr, type_arr);
@@ -290,12 +291,11 @@ int acc_log_request( struct sip_msg *rq)
 			acc_time_exten.s, (unsigned int)acc_env.tv.tv_usec,
 			log_msg);
 	} else if(acc_time_mode==2) {
+		dtime = (double)acc_env.tv.tv_usec;
+		dtime = (dtime / 1000000) + (double)acc_env.tv.tv_sec;
 		LM_GEN2(log_facility, log_level, "%.*stimestamp=%lu;%s=%.3f%s",
 			acc_env.text.len, acc_env.text.s,(unsigned long)acc_env.ts,
-			acc_time_attr.s,
-			(((double)(acc_env.tv.tv_sec * 1000)
-							+ (acc_env.tv.tv_usec / 1000)) / 1000),
-			log_msg);
+			acc_time_attr.s, dtime, log_msg);
 	} else if(acc_time_mode==3 || acc_time_mode==4) {
 		if(acc_time_mode==3) {
 			t = localtime(&acc_env.ts);