mirror of
https://github.com/internetarchive/warcprox.git
synced 2025-01-18 13:22:09 +01:00
Cache error status and message
Instead of returning a generic error status and message when hitting the bad_hostnames_ports cache, we cache and return the original error.
This commit is contained in:
parent
f0d2898326
commit
5b30dd4576
@ -385,14 +385,16 @@ class MitmProxyHandler(http_server.BaseHTTPRequestHandler):
|
|||||||
self._determine_host_port()
|
self._determine_host_port()
|
||||||
assert self.url
|
assert self.url
|
||||||
# Check if target hostname:port is in `bad_hostnames_ports` cache
|
# Check if target hostname:port is in `bad_hostnames_ports` cache
|
||||||
# to avoid retrying to connect.
|
# to avoid retrying to connect. cached is a tuple containing
|
||||||
|
# (status_code, error message)
|
||||||
|
cached = None
|
||||||
|
hostname_port = self._hostname_port_cache_key()
|
||||||
with self.server.bad_hostnames_ports_lock:
|
with self.server.bad_hostnames_ports_lock:
|
||||||
hostname_port = self._hostname_port_cache_key()
|
cached = self.server.bad_hostnames_ports.get(hostname_port)
|
||||||
if hostname_port in self.server.bad_hostnames_ports:
|
if cached:
|
||||||
self.logger.info('Cannot connect to %s (cache)',
|
self.logger.info('Cannot connect to %s (cache)', hostname_port)
|
||||||
hostname_port)
|
self.send_error(cached[0], cached[1])
|
||||||
self.send_error(502, 'message timed out')
|
return
|
||||||
return
|
|
||||||
# Connect to destination
|
# Connect to destination
|
||||||
self._connect_to_remote_server()
|
self._connect_to_remote_server()
|
||||||
except warcprox.RequestBlockedByRule as e:
|
except warcprox.RequestBlockedByRule as e:
|
||||||
@ -406,7 +408,7 @@ class MitmProxyHandler(http_server.BaseHTTPRequestHandler):
|
|||||||
if type(e) in (socket.timeout, NewConnectionError):
|
if type(e) in (socket.timeout, NewConnectionError):
|
||||||
host_port = self._hostname_port_cache_key()
|
host_port = self._hostname_port_cache_key()
|
||||||
with self.server.bad_hostnames_ports_lock:
|
with self.server.bad_hostnames_ports_lock:
|
||||||
self.server.bad_hostnames_ports[host_port] = 1
|
self.server.bad_hostnames_ports[host_port] = (500, str(e))
|
||||||
self.logger.info('bad_hostnames_ports cache size: %d',
|
self.logger.info('bad_hostnames_ports cache size: %d',
|
||||||
len(self.server.bad_hostnames_ports))
|
len(self.server.bad_hostnames_ports))
|
||||||
self.logger.error(
|
self.logger.error(
|
||||||
@ -557,7 +559,7 @@ class MitmProxyHandler(http_server.BaseHTTPRequestHandler):
|
|||||||
if type(e) == http_client.RemoteDisconnected:
|
if type(e) == http_client.RemoteDisconnected:
|
||||||
host_port = self._hostname_port_cache_key()
|
host_port = self._hostname_port_cache_key()
|
||||||
with self.server.bad_hostnames_ports_lock:
|
with self.server.bad_hostnames_ports_lock:
|
||||||
self.server.bad_hostnames_ports[host_port] = 1
|
self.server.bad_hostnames_ports[host_port] = (502, str(e))
|
||||||
self.logger.info('bad_hostnames_ports cache size: %d',
|
self.logger.info('bad_hostnames_ports cache size: %d',
|
||||||
len(self.server.bad_hostnames_ports))
|
len(self.server.bad_hostnames_ports))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user