Commit 1112981e authored by Sergey Lyubka's avatar Sergey Lyubka

Fix mg_if_not_modified() logic

    PUBLISHED_FROM=3eb1455eacc66af83904f56397c0e24b1d4f13bf
parent 0cf82744
......@@ -103,6 +103,7 @@ MG_INTERNAL size_t mg_handle_chunked(struct mg_connection *nc,
#ifndef MG_DISABLE_FILESYSTEM
MG_INTERNAL time_t mg_parse_date_string(const char *datetime);
MG_INTERNAL int mg_is_not_modified(struct http_message *hm, cs_stat_t *st);
#endif
/* Forward declarations for testing. */
......@@ -5981,13 +5982,17 @@ MG_INTERNAL time_t mg_parse_date_string(const char *datetime) {
return result;
}
static int mg_is_not_modified(struct http_message *hm, cs_stat_t *st) {
MG_INTERNAL int mg_is_not_modified(struct http_message *hm, cs_stat_t *st) {
struct mg_str *hdr;
if ((hdr = mg_get_http_header(hm, "If-None-Match")) != NULL) {
char etag[64];
struct mg_str *ims = mg_get_http_header(hm, "If-Modified-Since");
struct mg_str *inm = mg_get_http_header(hm, "If-None-Match");
construct_etag(etag, sizeof(etag), st);
return (inm != NULL && !mg_vcasecmp(inm, etag)) ||
(ims != NULL && st->st_mtime <= mg_parse_date_string(ims->p));
return mg_vcasecmp(hdr, etag) == 0;
} else if ((hdr = mg_get_http_header(hm, "If-Modified-Since")) != NULL) {
return st->st_mtime <= mg_parse_date_string(hdr->p);
} else {
return 0;
}
}
static void mg_send_digest_auth_request(struct mg_connection *c,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment