Pull response parsing inside of _send_request().
This commit is contained in:
parent
7f1aa5cbf3
commit
01da844141
37
av98.py
37
av98.py
|
@ -423,7 +423,7 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
|
|||
|
||||
# Send request to server
|
||||
try:
|
||||
address, f = self._send_request(gi)
|
||||
status, meta, address, f = self._send_request(gi)
|
||||
except Exception as err:
|
||||
if isinstance(err, socket.gaierror):
|
||||
self.log["dns_failures"] += 1
|
||||
|
@ -435,21 +435,6 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
|
|||
self.log["timeouts"] += 1
|
||||
raise err
|
||||
|
||||
# Spec dictates <META> should not exceed 1024 bytes,
|
||||
# so maximum valid header length is 1027 bytes.
|
||||
header = f.readline(1027)
|
||||
header = header.decode("UTF-8")
|
||||
if not header or header[-1] != '\n':
|
||||
raise RuntimeError("Received invalid header from server!")
|
||||
header = header.strip()
|
||||
ui_out.debug("Response header: %s." % header)
|
||||
|
||||
# Validate header
|
||||
status, meta = header.split(maxsplit=1) if header[2:].strip() else (header[:2], "")
|
||||
if len(meta) > 1024 or len(status) != 2 or not status.isnumeric():
|
||||
f.close()
|
||||
raise RuntimeError("Received invalid header from server!")
|
||||
|
||||
# Update redirect loop/maze escaping state
|
||||
if not status.startswith("3"):
|
||||
self.previous_redirectors = set()
|
||||
|
@ -641,7 +626,25 @@ Slow internet connection? Use 'set timeout' to be more patient.""")
|
|||
# Send request and wrap response in a file descriptor
|
||||
ui_out.debug("Sending %s<CRLF>" % gi.url)
|
||||
s.sendall((gi.url + CRLF).encode("UTF-8"))
|
||||
return address, s.makefile(mode = "rb")
|
||||
|
||||
# Read back response
|
||||
f = s.makefile(mode = "rb")
|
||||
# Spec dictates <META> should not exceed 1024 bytes,
|
||||
# so maximum valid header length is 1027 bytes.
|
||||
header = f.readline(1027)
|
||||
header = header.decode("UTF-8")
|
||||
if not header or header[-1] != '\n':
|
||||
raise RuntimeError("Received invalid header from server!")
|
||||
header = header.strip()
|
||||
ui_out.debug("Response header: %s." % header)
|
||||
|
||||
# Validate header
|
||||
status, meta = header.split(maxsplit=1) if header[2:].strip() else (header[:2], "")
|
||||
if len(meta) > 1024 or len(status) != 2 or not status.isnumeric():
|
||||
f.close()
|
||||
raise RuntimeError("Received invalid header from server!")
|
||||
|
||||
return status, meta, address, f
|
||||
|
||||
def _get_addresses(self, host, port):
|
||||
# DNS lookup - will get IPv4 and IPv6 records if IPv6 is enabled
|
||||
|
|
Loading…
Reference in New Issue