projects
/
privoxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
get_clf_timestamp(): Fix locking of localtime()
[privoxy.git]
/
parsers.c
diff --git
a/parsers.c
b/parsers.c
index
40c58f3
..
15abc40
100644
(file)
--- a/
parsers.c
+++ b/
parsers.c
@@
-2748,9
+2748,8
@@
static jb_err server_last_modified(struct client_state *csp, char **header)
time_t now;
struct tm *timeptr = NULL;
long int rtime;
time_t now;
struct tm *timeptr = NULL;
long int rtime;
-#ifdef HAVE_GMTIME_R
struct tm gmt;
struct tm gmt;
-#endif
+
now = time(NULL);
rtime = (long int)difftime(now, last_modified);
if (rtime)
now = time(NULL);
rtime = (long int)difftime(now, last_modified);
if (rtime)
@@
-2769,29
+2768,16
@@
static jb_err server_last_modified(struct client_state *csp, char **header)
rtime *= -1;
}
last_modified += rtime;
rtime *= -1;
}
last_modified += rtime;
-#ifdef HAVE_GMTIME_R
- timeptr = gmtime_r(&last_modified, &gmt);
-#elif defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_lock(&gmtime_mutex);
- timeptr = gmtime(&last_modified);
-#else
- timeptr = gmtime(&last_modified);
-#endif
+ timeptr = privoxy_gmtime_r(&last_modified, &gmt);
if ((NULL == timeptr) || !strftime(newheader,
sizeof(newheader), "%a, %d %b %Y %H:%M:%S GMT", timeptr))
{
if ((NULL == timeptr) || !strftime(newheader,
sizeof(newheader), "%a, %d %b %Y %H:%M:%S GMT", timeptr))
{
-#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_unlock(&gmtime_mutex);
-#endif
log_error(LOG_LEVEL_ERROR,
"Randomizing '%s' failed. Crunching the header without replacement.",
*header);
freez(*header);
return JB_ERR_OK;
}
log_error(LOG_LEVEL_ERROR,
"Randomizing '%s' failed. Crunching the header without replacement.",
*header);
freez(*header);
return JB_ERR_OK;
}
-#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_unlock(&gmtime_mutex);
-#endif
freez(*header);
*header = strdup("Last-Modified: ");
string_append(header, newheader);
freez(*header);
*header = strdup("Last-Modified: ");
string_append(header, newheader);
@@
-3417,9
+3403,7
@@
static jb_err client_host(struct client_state *csp, char **header)
static jb_err client_if_modified_since(struct client_state *csp, char **header)
{
char newheader[50];
static jb_err client_if_modified_since(struct client_state *csp, char **header)
{
char newheader[50];
-#ifdef HAVE_GMTIME_R
struct tm gmt;
struct tm gmt;
-#endif
struct tm *timeptr = NULL;
time_t tm = 0;
const char *newval;
struct tm *timeptr = NULL;
time_t tm = 0;
const char *newval;
@@
-3477,29
+3461,16
@@
static jb_err client_if_modified_since(struct client_state *csp, char **header)
*header);
}
tm += rtime * (negative_range ? -1 : 1);
*header);
}
tm += rtime * (negative_range ? -1 : 1);
-#ifdef HAVE_GMTIME_R
- timeptr = gmtime_r(&tm, &gmt);
-#elif defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_lock(&gmtime_mutex);
- timeptr = gmtime(&tm);
-#else
- timeptr = gmtime(&tm);
-#endif
+ timeptr = privoxy_gmtime_r(&tm, &gmt);
if ((NULL == timeptr) || !strftime(newheader,
sizeof(newheader), "%a, %d %b %Y %H:%M:%S GMT", timeptr))
{
if ((NULL == timeptr) || !strftime(newheader,
sizeof(newheader), "%a, %d %b %Y %H:%M:%S GMT", timeptr))
{
-#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_unlock(&gmtime_mutex);
-#endif
log_error(LOG_LEVEL_ERROR,
"Randomizing '%s' failed. Crunching the header without replacement.",
*header);
freez(*header);
return JB_ERR_OK;
}
log_error(LOG_LEVEL_ERROR,
"Randomizing '%s' failed. Crunching the header without replacement.",
*header);
freez(*header);
return JB_ERR_OK;
}
-#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE)
- privoxy_mutex_unlock(&gmtime_mutex);
-#endif
freez(*header);
*header = strdup("If-Modified-Since: ");
string_append(header, newheader);
freez(*header);
*header = strdup("If-Modified-Since: ");
string_append(header, newheader);
@@
-4385,9
+4356,10
@@
static jb_err parse_header_time(const char *header_time, time_t *result)
{
char recreated_date[100];
struct tm *tm;
{
char recreated_date[100];
struct tm *tm;
+ struct tm storage;
time_t result2;
time_t result2;
- tm =
gmtime(result
);
+ tm =
privoxy_gmtime_r(result, &storage
);
if (!strftime(recreated_date, sizeof(recreated_date),
time_formats[i], tm))
{
if (!strftime(recreated_date, sizeof(recreated_date),
time_formats[i], tm))
{