summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2022-01-17 16:19:29 -0700
committerBert JW Regeer <bertjw@regeer.org>2022-01-17 16:25:24 -0700
commit8423ffac8f2f32ed501d225f9f4f6893511212a7 (patch)
tree3eb5402ae2ee201e5ef838160579929fb21ab86b
parentd1b23a1900d5ccc2aae56c4bb475f9640cb9a455 (diff)
downloadwaitress-8423ffac8f2f32ed501d225f9f4f6893511212a7.tar.gz
Add support for seekable wsgi.file_wrapper
-rw-r--r--src/waitress/buffers.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/waitress/buffers.py b/src/waitress/buffers.py
index 386eb40..8091ff0 100644
--- a/src/waitress/buffers.py
+++ b/src/waitress/buffers.py
@@ -145,6 +145,16 @@ class ReadOnlyFileBasedBuffer(FileBasedBuffer):
self.file = file
self.block_size = block_size # for __iter__
+ # This is for the benefit of anyone that is attempting to wrap this
+ # wsgi.file_wrapper in a WSGI middleware and wants to seek, this is
+ # useful for instance for support Range requests
+ if _is_seekable(self.file):
+ if hasattr(self.file, "seekable"):
+ self.seekable = self.file.seekable
+
+ self.seek = self.file.seek
+ self.tell = self.file.tell
+
def prepare(self, size=None):
if _is_seekable(self.file):
start_pos = self.file.tell()