diff --git a/human_curl/async.py b/human_curl/async.py index 3ac7fbe..b2a30f2 100644 --- a/human_curl/async.py +++ b/human_curl/async.py @@ -298,6 +298,7 @@ def cleanup_pool(self): opener.close() self._openers_pool.close() + self._openers_pool = None def method(self, method, **kwargs): """Added request params to data_queue diff --git a/human_curl/core.py b/human_curl/core.py index 3fb4979..2e6299b 100644 --- a/human_curl/core.py +++ b/human_curl/core.py @@ -727,6 +727,12 @@ def json(self): except ValueError: return None + def _clean_raw_headers(self, raw_headers): + ret = raw_headers.strip() + ret = ret.replace("\r\nHTTP", "\r\n\r\nHTTP") + ret = ret.replace("\r\n\r\n\r\n", "\r\n\r\n") + return ret + def _parse_headers_raw(self): """Parse response headers and save as instance vars """ @@ -763,7 +769,11 @@ def parse_header_block(raw_block): logger.warn(e) continue else: - block_headers.append((version, code, message)) + if len(block_headers) > 0: + logger.warn("Status HTTP header already exitst %s, but found one more %s for url %s" % + (block_headers[0], (version, code, message), self.url)) + else: + block_headers.append((version, code, message)) else: # raise ValueError("Wrong header field") pass @@ -771,7 +781,7 @@ def parse_header_block(raw_block): raw_headers = self._headers_output.getvalue() - headers_blocks = raw_headers.strip().split("\r\n\r\n") + headers_blocks = self._clean_raw_headers(raw_headers).split("\r\n\r\n") for raw_block in headers_blocks: block = parse_header_block(raw_block)