diff --git a/daemon/recording.c b/daemon/recording.c index ad36e1901..e5c404825 100644 --- a/daemon/recording.c +++ b/daemon/recording.c @@ -456,16 +456,22 @@ static int rec_pcap_meta_finish_file(struct call *call) { time_t start = call->created.tv_sec; time_t end = rtpe_now.tv_sec; char timebuffer[20]; - struct tm *timeinfo; + struct tm timeinfo; struct timeval *terminate; terminate = &(((struct call_monologue *)call->monologues.head->data)->terminated); fprintf(recording->u.pcap.meta_fp, "\nTimestamp terminated ms(first monologue): %.3lf", terminate->tv_sec*1000.0 + terminate->tv_usec/1000.0); - timeinfo = localtime(&start); - strftime(timebuffer, 20, "%FT%T", timeinfo); - fprintf(recording->u.pcap.meta_fp, "\n\ncall start time: %s\n", timebuffer); - timeinfo = localtime(&end); - strftime(timebuffer, 20, "%FT%T", timeinfo); - fprintf(recording->u.pcap.meta_fp, "call end time: %s\n", timebuffer); + if (localtime_r(&start, &timeinfo) < 0) { + ilog(LOG_ERROR, "Cannot get start local time, while cleaning up recording meta file: %s", strerror(errno)); + } else { + strftime(timebuffer, 20, "%FT%T", &timeinfo); + fprintf(recording->u.pcap.meta_fp, "\n\ncall start time: %s\n", timebuffer); + } + if (localtime_r(&end, &timeinfo) < 0) { + ilog(LOG_ERROR, "Cannot get end local time, while cleaning up recording meta file: %s", strerror(errno)); + } else { + strftime(timebuffer, 20, "%FT%T", &timeinfo); + fprintf(recording->u.pcap.meta_fp, "call end time: %s\n", timebuffer); + } // Print metadata if (call->metadata.len)