From cf3f554dbc9cba6b90f60e9334f581d602e0d4df Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Sun, 16 Dec 2012 08:34:50 +0100
Subject: mod_http_files: Compare If-Modified-Since to last modification date

---
 plugins/mod_http_files.lua | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/plugins/mod_http_files.lua b/plugins/mod_http_files.lua
index 92617b09..d83e6f97 100644
--- a/plugins/mod_http_files.lua
+++ b/plugins/mod_http_files.lua
@@ -57,11 +57,14 @@ function serve_file(event, path)
 		return 404;
 	end
 
-	response.headers.last_modified = os_date('!%a, %d %b %Y %H:%M:%S GMT', attr.modification);
+	local last_modified = os_date('!%a, %d %b %Y %H:%M:%S GMT', attr.modification);
+	response.headers.last_modified = last_modified;
 
-	local tag = ("%02x-%x-%x-%x"):format(attr.dev or 0, attr.ino or 0, attr.size or 0, attr.modification or 0);
-	response.headers.etag = tag;
-	if tag == request.headers.if_none_match then
+	local etag = ("%02x-%x-%x-%x"):format(attr.dev or 0, attr.ino or 0, attr.size or 0, attr.modification or 0);
+	response.headers.etag = etag;
+
+	if etag == request.headers.if_none_match
+	or last_modified == request.headers.if_modified_since then
 		return 304;
 	end
 
-- 
cgit v1.2.3