static int generate_certificate_valid_date(time_t time_spec, char *buffer,
size_t buffer_size)
{
+#ifdef HAVE_GMTIME_R
struct tm valid_date;
+#endif
+ struct tm *timeptr;
size_t ret;
-#ifndef HAVE_GMTIME_R
-#error HTTP inspection currently requires gmtime_r() which seems to be missing
+#ifdef HAVE_GMTIME_R
+ timeptr = gmtime_r(&time_spec, &valid_date);
+#elif defined(MUTEX_LOCKS_AVAILABLE)
+ privoxy_mutex_lock(&gmtime_mutex);
+ timeptr = gmtime(&time_spec);
+#else
+#warning Using unlocked gmtime()
+ timeptr = gmtime(&time_spec);
#endif
- if (NULL == gmtime_r(&time_spec, &valid_date))
+ if (NULL == timeptr)
{
+#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
+ privoxy_mutex_unlock(&gmtime_mutex);
+#endif
return 1;
}
- ret = strftime(buffer, buffer_size, "%Y%m%d%H%M%S", &valid_date);
+ ret = strftime(buffer, buffer_size, "%Y%m%d%H%M%S", timeptr);
+#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
+ privoxy_mutex_unlock(&gmtime_mutex);
+#endif
if (ret != 14)
{
return 1;