diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike index 1b2465080c1bca1dd9a83df78d0fbc42b2a93b39..af4a989e9d4969c39cd618705fe57b9318c754c7 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike +++ b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike @@ -634,7 +634,6 @@ void response_and_finish(mapping m, function|void _log_cb) if (request_headers["if-modified-since"]) { int t = .http_decode_date(request_headers["if-modified-since"]); - if (t) { if (!m->stat && m->file) @@ -648,6 +647,23 @@ void response_and_finish(mapping m, function|void _log_cb) } } + if (request_headers["if-none-match"] && m->extra_heads ) + { + string et; + if((et = m->extra_heads->ETag) || (et =m->extra_heads->etag)) + { + if( string key = request_headers["if-none-match"] ) + { + if (key == et) + { + m_delete(m,"file"); + m->data=""; + m->error=304; + } + } + } + } + string header=make_response_header(m); if (m->stop) m->size=1+m->stop-m->start;