aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/http.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2013-03-02 16:57:38 +1300
committerAldo Cortesi <aldo@nullcube.com>2013-03-02 16:57:38 +1300
commit97537417f01c17903fb4cebd59991eea57faa5e6 (patch)
tree4d13d50078edd45ddc512b01ea352c4fc8abafb9 /netlib/http.py
parent0fa63519654db2567995f3c3ac6e464796de66a3 (diff)
downloadmitmproxy-97537417f01c17903fb4cebd59991eea57faa5e6.tar.gz
mitmproxy-97537417f01c17903fb4cebd59991eea57faa5e6.tar.bz2
mitmproxy-97537417f01c17903fb4cebd59991eea57faa5e6.zip
Factor out http.parse_response_line
Diffstat (limited to 'netlib/http.py')
-rw-r--r--netlib/http.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/netlib/http.py b/netlib/http.py
index 58993686..bc09c8a1 100644
--- a/netlib/http.py
+++ b/netlib/http.py
@@ -274,6 +274,20 @@ def read_http_body_response(rfile, headers, limit):
return read_http_body(500, rfile, headers, all, limit)
+def parse_response_line(line):
+ parts = line.strip().split(" ", 2)
+ if len(parts) == 2: # handle missing message gracefully
+ parts.append("")
+ if len(parts) != 3:
+ return None
+ proto, code, msg = parts
+ try:
+ code = int(code)
+ except ValueError:
+ return None
+ return (proto, code, msg)
+
+
def read_response(rfile, method, body_size_limit):
"""
Return an (httpversion, code, msg, headers, content) tuple.
@@ -283,19 +297,13 @@ def read_response(rfile, method, body_size_limit):
line = rfile.readline()
if not line:
raise HttpErrorConnClosed(502, "Server disconnect.")
- parts = line.strip().split(" ", 2)
- if len(parts) == 2: # handle missing message gracefully
- parts.append("")
- if not len(parts) == 3:
+ parts = parse_response_line(line)
+ if not parts:
raise HttpError(502, "Invalid server response: %s"%repr(line))
proto, code, msg = parts
httpversion = parse_http_protocol(proto)
if httpversion is None:
raise HttpError(502, "Invalid HTTP version in line: %s"%repr(proto))
- try:
- code = int(code)
- except ValueError:
- raise HttpError(502, "Invalid server response: %s"%repr(line))
headers = read_headers(rfile)
if headers is None:
raise HttpError(502, "Invalid headers.")