From 4ef8d0eec0f37a5ba50941bbd69b0aff49dc9625 Mon Sep 17 00:00:00 2001 From: Per Hedbor <ph@opera.com> Date: Wed, 1 Dec 2010 03:52:51 +0100 Subject: [PATCH] Support If-None-Match for etags. --- .../HTTP.pmod/Server.pmod/Request.pike | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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 1b2465080c..af4a989e9d 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; -- GitLab