From e8be1a55de3412f787bcc48c0aeea90a888fa1c1 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Fri, 24 Jul 2015 20:10:18 +0300 Subject: [PATCH] Don't read response for HEAD requests, even if they contain Content-Length. --- deproxy.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/deproxy.py b/deproxy.py index 53e56b7..61c9b86 100755 --- a/deproxy.py +++ b/deproxy.py @@ -378,8 +378,10 @@ def __repr__(self): self.orphaned_handlings)) -def read_body_from_stream(stream, headers): - if ('Transfer-Encoding' in headers and +def read_body_from_stream(stream, headers, method): + if method == "HEAD": # no body + body = None + elif ('Transfer-Encoding' in headers and headers['Transfer-Encoding'] not in ['identity', 'chunked']): # 2 logger.debug('NotImplementedError - Transfer-Encoding not in "identity", "chunked"') @@ -604,7 +606,7 @@ def send_request(self, scheme, host, request): logger.debug(' %s: %s', k, v) logger.debug('Reading body') - body = read_body_from_stream(rfile, response_headers) + body = read_body_from_stream(rfile, response_headers, request.method) logger.debug('Creating Response object') response = Response(code, message, response_headers, body) @@ -1071,7 +1073,7 @@ def parse_request(self, rfile, wfile): persistent_connection = True logger.debug('reading body') - body = read_body_from_stream(rfile, headers) + body = read_body_from_stream(rfile, headers, method) logger.debug('returning') return (Request(method, path, headers, body), persistent_connection)