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(int) ap_checkmask(const char *data, const char *mask);
|
||||||
API_EXPORT(time_t) ap_tm2sec(const struct tm *t);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -425,10 +425,12 @@ API_EXPORT(int) ap_meets_conditions(request_rec *r)
|
|||||||
*/
|
*/
|
||||||
if_unmodified = ap_table_get(r->headers_in, "If-Unmodified-Since");
|
if_unmodified = ap_table_get(r->headers_in, "If-Unmodified-Since");
|
||||||
if (if_unmodified != NULL) {
|
if (if_unmodified != NULL) {
|
||||||
time_t ius = ap_parseHTTPdate(if_unmodified);
|
/* ZZZ we are changing time funcs to AP time thread funcs.
|
||||||
|
and we need to check return values of ap_parseHTTPdate. */
|
||||||
if ((ius != BAD_DATE) && (mtime > ius)) {
|
time_t ius ;
|
||||||
return HTTP_PRECONDITION_FAILED;
|
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)
|
else if ((r->method_number == M_GET)
|
||||||
&& ((if_modified_since =
|
&& ((if_modified_since =
|
||||||
ap_table_get(r->headers_in, "If-Modified-Since")) != NULL)) {
|
ap_table_get(r->headers_in, "If-Modified-Since")) != NULL)) {
|
||||||
time_t ims = ap_parseHTTPdate(if_modified_since);
|
time_t ims;
|
||||||
|
if (ap_parseHTTPdate(if_modified_since, &ims) != 1) {
|
||||||
if ((ims >= mtime) && (ims <= r->request_time)) {
|
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;
|
return HTTP_NOT_MODIFIED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -214,7 +214,7 @@ API_EXPORT(time_t) ap_tm2sec(const struct tm * t)
|
|||||||
* but many changes since then.
|
* 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;
|
struct tm ds;
|
||||||
int mint, mon;
|
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',
|
('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't',
|
||||||
('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c'};
|
('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c'};
|
||||||
|
|
||||||
if (!date)
|
if (!date) /* ZZZ return AP_FAILURE on all errors. */
|
||||||
return BAD_DATE;
|
return BAD_DATE;
|
||||||
|
|
||||||
while (*date && ap_isspace(*date)) /* Find first non-whitespace char */
|
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;
|
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,10 +588,11 @@ API_EXPORT(int) ap_scan_script_header_err_core(request_rec *r, char *buffer,
|
|||||||
* pass it on blindly because of restrictions on future values.
|
* pass it on blindly because of restrictions on future values.
|
||||||
*/
|
*/
|
||||||
else if (!strcasecmp(w, "Last-Modified")) {
|
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_update_mtime(r, mtime);
|
||||||
ap_set_last_modified(r);
|
ap_set_last_modified(r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(w, "Set-Cookie")) {
|
else if (!strcasecmp(w, "Set-Cookie")) {
|
||||||
ap_table_add(cookie_table, w, l);
|
ap_table_add(cookie_table, w, l);
|
||||||
|
Reference in New Issue
Block a user