mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
This evil little change modifies the interface to ap_parseHTTPdate()
for no good reason. It'll be backed out real soon. Submitted by: pthreads leftovers git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@83772 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -76,7 +76,7 @@ extern "C" {
|
||||
|
||||
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
|
||||
}
|
||||
|
@@ -425,9 +425,11 @@ API_EXPORT(int) ap_meets_conditions(request_rec *r)
|
||||
*/
|
||||
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)) {
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
@@ -478,9 +480,12 @@ API_EXPORT(int) ap_meets_conditions(request_rec *r)
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@@ -214,7 +214,7 @@ API_EXPORT(time_t) ap_tm2sec(const struct tm * t)
|
||||
* 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;
|
||||
@@ -228,7 +228,7 @@ API_EXPORT(time_t) ap_parseHTTPdate(const char *date)
|
||||
('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 */
|
||||
@@ -317,5 +317,7 @@ API_EXPORT(time_t) ap_parseHTTPdate(const char *date)
|
||||
|
||||
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;
|
||||
}
|
||||
|
@@ -588,11 +588,12 @@ API_EXPORT(int) ap_scan_script_header_err_core(request_rec *r, char *buffer,
|
||||
* pass it on blindly because of restrictions on future values.
|
||||
*/
|
||||
else if (!strcasecmp(w, "Last-Modified")) {
|
||||
time_t mtime = ap_parseHTTPdate(l);
|
||||
|
||||
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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user