Adds some safety around response types being wrong
Before we didn't check if the response object was actually a response object. This PR catches the exception should it happen and reports it to the user.
This commit is contained in:
parent
850446195f
commit
04c8f4a5ed
|
@ -167,12 +167,18 @@ class HttpProtocol(asyncio.Protocol):
|
||||||
# -------------------------------------------- #
|
# -------------------------------------------- #
|
||||||
|
|
||||||
def write_response(self, response):
|
def write_response(self, response):
|
||||||
try:
|
|
||||||
keep_alive = (
|
keep_alive = (
|
||||||
self.parser.should_keep_alive() and not self.signal.stopped)
|
self.parser.should_keep_alive() and not self.signal.stopped)
|
||||||
|
try:
|
||||||
self.transport.write(
|
self.transport.write(
|
||||||
response.output(
|
response.output(
|
||||||
self.request.version, keep_alive, self.request_timeout))
|
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:
|
except RuntimeError:
|
||||||
log.error(
|
log.error(
|
||||||
'Connection lost before response written @ {}'.format(
|
'Connection lost before response written @ {}'.format(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user