API_EXPORT(int) ap_checkmask(const char *data, const char *mask);
API_EXPORT(time_t) ap_tm2sec(const struct tm *t);
-API_EXPORT(time_t) ap_parseHTTPdate(const char *date);
+API_EXPORT(time_t) ap_parseHTTPdate(const char *date, time_t * retval);
#ifdef __cplusplus
}
*/
if_unmodified = ap_table_get(r->headers_in, "If-Unmodified-Since");
if (if_unmodified != NULL) {
- time_t ius = ap_parseHTTPdate(if_unmodified);
-
- if ((ius != BAD_DATE) && (mtime > ius)) {
- return HTTP_PRECONDITION_FAILED;
+ /* ZZZ we are changing time funcs to AP time thread funcs.
+ and we need to check return values of ap_parseHTTPdate. */
+ time_t ius ;
+ if (ap_parseHTTPdate(if_unmodified, &ius) == 1
+ && (mtime > ius)) {
+ return HTTP_PRECONDITION_FAILED;
}
}
}
else if ((r->method_number == M_GET)
&& ((if_modified_since =
ap_table_get(r->headers_in, "If-Modified-Since")) != NULL)) {
- time_t ims = ap_parseHTTPdate(if_modified_since);
-
- if ((ims >= mtime) && (ims <= r->request_time)) {
+ time_t ims;
+ if (ap_parseHTTPdate(if_modified_since, &ims) != 1) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING,
+ r->server, "bogus if-modified-since-header");
+ }
+ else if ((ims >= mtime) && (ims <= r->request_time)) {
return HTTP_NOT_MODIFIED;
}
}
* but many changes since then.
*
*/
-API_EXPORT(time_t) ap_parseHTTPdate(const char *date)
+API_EXPORT(time_t) ap_parseHTTPdate(const char *date, time_t * retval)
{
struct tm ds;
int mint, mon;
('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't',
('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c'};
- if (!date)
+ if (!date) /* ZZZ return AP_FAILURE on all errors. */
return BAD_DATE;
while (*date && ap_isspace(*date)) /* Find first non-whitespace char */
ds.tm_mon = mon;
- return ap_tm2sec(&ds);
+ /* ZZZ return AP_SUCCESS. use AP Implode time func for this. */
+ *retval = ap_tm2sec(&ds);
+ return 1;
}
* pass it on blindly because of restrictions on future values.
*/
else if (!strcasecmp(w, "Last-Modified")) {
- time_t mtime = ap_parseHTTPdate(l);
-
- ap_update_mtime(r, mtime);
- ap_set_last_modified(r);
+ time_t mtime;
+ if (ap_parseHTTPdate(l, &mtime) == 1) {
+ ap_update_mtime(r, mtime);
+ ap_set_last_modified(r);
+ }
}
else if (!strcasecmp(w, "Set-Cookie")) {
ap_table_add(cookie_table, w, l);