Merge branch 'master' of github.com:channelcat/sanic into add_app_loop_safety

This commit is contained in:
Eli Uriegas
2017-02-17 07:10:59 -06:00
4 changed files with 20 additions and 9 deletions

View File

@@ -167,19 +167,26 @@ class HttpProtocol(asyncio.Protocol):
# -------------------------------------------- #
def write_response(self, response):
keep_alive = (
self.parser.should_keep_alive() and not self.signal.stopped)
try:
keep_alive = (
self.parser.should_keep_alive() and not self.signal.stopped)
self.transport.write(
response.output(
self.request.version, keep_alive, self.request_timeout))
except AttributeError:
log.error(
('Invalid response object for url {}, '
'Expected Type: HTTPResponse, Actual Type: {}').format(
self.url, type(response)))
self.write_error(ServerError('Invalid response type'))
except RuntimeError:
log.error(
'Connection lost before response written @ {}'.format(
self.request.ip))
except Exception as e:
self.bail_out(
"Writing response failed, connection closed {}".format(e))
"Writing response failed, connection closed {}".format(
repr(e)))
finally:
if not keep_alive:
self.transport.close()
@@ -196,10 +203,10 @@ class HttpProtocol(asyncio.Protocol):
except RuntimeError:
log.error(
'Connection lost before error written @ {}'.format(
self.request.ip))
self.request.ip if self.request else 'Unknown'))
except Exception as e:
self.bail_out(
"Writing error failed, connection closed {}".format(e),
"Writing error failed, connection closed {}".format(repr(e)),
from_error=True)
finally:
self.transport.close()