From 148190c2473f95d583568fa21c336e29c63633ec Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Thu, 17 Jan 2019 20:57:53 +0100 Subject: ContentLengthMiddleware: don't duplicate the header When an iterable is returned and a Content-Length header is already present, don't add a second one. --- wsgitools/middlewares.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/wsgitools/middlewares.py b/wsgitools/middlewares.py index 97b8092..1619e0b 100644 --- a/wsgitools/middlewares.py +++ b/wsgitools/middlewares.py @@ -166,7 +166,7 @@ class ContentLengthMiddleware(object): gotdata = True assert bool(todo) status, headers = todo[0] - if not [k for k, _ in headers if k.lower() == "content-length"]: + if all(k.lower() != "content-length" for k, _ in headers): length = sum(map(len, ret)) headers.append(("Content-Length", str(length))) start_response(status, headers) @@ -188,17 +188,18 @@ class ContentLengthMiddleware(object): data.append(first) length = len(first) - while (not stopped) and length < self.maxstore: - try: - data.append(next(ret)) - length += len(data[-1]) - except StopIteration: - stopped = True + if all(k.lower() != "content-length" for k, _ in headers): + while (not stopped) and length < self.maxstore: + try: + data.append(next(ret)) + length += len(data[-1]) + except StopIteration: + stopped = True - if stopped: - headers.append(("Content-length", str(length))) - start_response(status, headers) - return data + if stopped: + headers.append(("Content-length", str(length))) + start_response(status, headers) + return data start_response(status, headers) -- cgit v1.2.3