Catch occasional protocol errors in regular connect

Fixes #1843 and #1847
This commit is contained in:
Aldo Cortesi 2016-12-16 10:54:36 +13:00
parent 6b5673e849
commit 61e552553c

View File

@ -182,15 +182,6 @@ class HttpLayer(base.Layer):
try: try:
self.set_server((f.request.host, f.request.port)) self.set_server((f.request.host, f.request.port))
except (
exceptions.ProtocolException, exceptions.NetlibException
) as e:
# HTTPS tasting means that ordinary errors like resolution
# and connection errors can happen here.
self.send_error_response(502, repr(e))
f.error = flow.Error(str(e))
self.channel.ask("error", f)
return False
if f.response: if f.response:
resp = f.response resp = f.response
@ -202,6 +193,15 @@ class HttpLayer(base.Layer):
if is_ok(resp.status_code): if is_ok(resp.status_code):
layer = self.ctx.next_layer(self) layer = self.ctx.next_layer(self)
layer() layer()
except (
exceptions.ProtocolException, exceptions.NetlibException
) as e:
# HTTPS tasting means that ordinary errors like resolution
# and connection errors can happen here.
self.send_error_response(502, repr(e))
f.error = flow.Error(str(e))
self.channel.ask("error", f)
return False
return False return False