From: Jo-Philipp Wich Date: Sun, 20 Dec 2009 18:18:43 +0000 (+0000) Subject: libs/http: fix incorrent treatment of If-None-Match (#100) X-Git-Tag: 0.10.0~880 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=21328113ddcd07a1711ce0a14c6c4abe6d1de503;p=oweals%2Fluci.git libs/http: fix incorrent treatment of If-None-Match (#100) --- diff --git a/libs/http/luasrc/http/protocol/conditionals.lua b/libs/http/luasrc/http/protocol/conditionals.lua index 015cf4518..635d6b2db 100644 --- a/libs/http/luasrc/http/protocol/conditionals.lua +++ b/libs/http/luasrc/http/protocol/conditionals.lua @@ -93,16 +93,15 @@ end -- @return Alternative status code if the precondition failed -- @return Table containing extra HTTP headers if the precondition failed function if_none_match( req, stat ) - local h = req.headers - local etag = mk_etag( stat ) + local h = req.headers + local etag = mk_etag( stat ) + local method = req.env and req.env.REQUEST_METHOD or "GET" -- Check for matching resource if type(h['If-None-Match']) == "string" then for ent in h['If-None-Match']:gmatch("([^, ]+)") do if ( ent == '*' or ent == etag ) and stat ~= nil then - if req.request_method == "get" or - req.request_method == "head" - then + if method == "GET" or method == "HEAD" then return false, 304, { ["ETag"] = mk_etag( stat ); ["Date"] = date.to_http( os.time() );