summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBraedon Vickers <braedon.vickers@gmail.com>2021-10-11 13:53:49 +0800
committerMarcel Hellkamp <marc@gsites.de>2022-02-02 13:34:31 +0100
commiteb1982ea22937a042f5a6e98c5709f779a8fd66c (patch)
tree88401e84478c11e37ead312111f0f652fee568bd
parenta885fd02737508de84ba7c0422b5d076ba6d3265 (diff)
downloadbottle-eb1982ea22937a042f5a6e98c5709f779a8fd66c.tar.gz
Fix handling of empty If-Modified-Since header for static files
Previously, if the If-Modified-Since header was an empty string it wouldn't be parsed into an int (or None), but would still be compared to the int mtime, causing a TypeError.
-rwxr-xr-xbottle.py4
-rwxr-xr-xtest/test_sendfile.py5
2 files changed, 7 insertions, 2 deletions
diff --git a/bottle.py b/bottle.py
index d94721f..48aefbb 100755
--- a/bottle.py
+++ b/bottle.py
@@ -2928,8 +2928,8 @@ def static_file(filename, root,
ims = getenv('HTTP_IF_MODIFIED_SINCE')
if ims:
ims = parse_date(ims.split(";")[0].strip())
- if ims is not None and ims >= int(stats.st_mtime):
- return HTTPResponse(status=304, **headers)
+ if ims is not None and ims >= int(stats.st_mtime):
+ return HTTPResponse(status=304, **headers)
body = '' if request.method == 'HEAD' else open(filename, 'rb')
diff --git a/test/test_sendfile.py b/test/test_sendfile.py
index d6693c2..ef8eef5 100755
--- a/test/test_sendfile.py
+++ b/test/test_sendfile.py
@@ -95,6 +95,11 @@ class TestSendFile(unittest.TestCase):
request.environ['HTTP_IF_MODIFIED_SINCE'] = bottle.http_date(100)
self.assertEqual(open(__file__,'rb').read(), static_file(basename, root=root).body.read())
+ def test_ims_empty(self):
+ """ SendFile: Empty If-Modified-Since"""
+ request.environ['HTTP_IF_MODIFIED_SINCE'] = ''
+ self.assertEqual(open(__file__, 'rb').read(), static_file(basename, root=root).body.read())
+
def test_etag(self):
""" SendFile: If-Modified-Since"""
res = static_file(basename, root=root)