This commit is contained in:
Ashley Sommer 2018-10-03 10:59:24 +10:00
parent fafe23d7c2
commit 790047e450

View File

@ -150,10 +150,7 @@ class HttpProtocol(asyncio.Protocol):
self._request_stream_task.cancel() self._request_stream_task.cancel()
if self._request_handler_task: if self._request_handler_task:
self._request_handler_task.cancel() self._request_handler_task.cancel()
try: self.write_error(RequestTimeout('Request Timeout'))
raise RequestTimeout('Request Timeout')
except RequestTimeout as exception:
self.write_error(exception)
def response_timeout_callback(self): def response_timeout_callback(self):
# Check if elapsed time since response was initiated exceeds our # Check if elapsed time since response was initiated exceeds our
@ -170,10 +167,7 @@ class HttpProtocol(asyncio.Protocol):
self._request_stream_task.cancel() self._request_stream_task.cancel()
if self._request_handler_task: if self._request_handler_task:
self._request_handler_task.cancel() self._request_handler_task.cancel()
try: self.write_error(ServiceUnavailable('Response Timeout'))
raise ServiceUnavailable('Response Timeout')
except ServiceUnavailable as exception:
self.write_error(exception)
def keep_alive_timeout_callback(self): def keep_alive_timeout_callback(self):
# Check if elapsed time since last response exceeds our configured # Check if elapsed time since last response exceeds our configured
@ -199,8 +193,7 @@ class HttpProtocol(asyncio.Protocol):
# memory limits # memory limits
self._total_request_size += len(data) self._total_request_size += len(data)
if self._total_request_size > self.request_max_size: if self._total_request_size > self.request_max_size:
exception = PayloadTooLarge('Payload Too Large') self.write_error(PayloadTooLarge('Payload Too Large'))
self.write_error(exception)
# Create parser if this is the first time we're receiving data # Create parser if this is the first time we're receiving data
if self.parser is None: if self.parser is None:
@ -218,8 +211,7 @@ class HttpProtocol(asyncio.Protocol):
message = 'Bad Request' message = 'Bad Request'
if self._debug: if self._debug:
message += '\n' + traceback.format_exc() message += '\n' + traceback.format_exc()
exception = InvalidUsage(message) self.write_error(InvalidUsage(message))
self.write_error(exception)
def on_url(self, url): def on_url(self, url):
if not self.url: if not self.url:
@ -233,8 +225,7 @@ class HttpProtocol(asyncio.Protocol):
if value is not None: if value is not None:
if self._header_fragment == b'Content-Length' \ if self._header_fragment == b'Content-Length' \
and int(value) > self.request_max_size: and int(value) > self.request_max_size:
exception = PayloadTooLarge('Payload Too Large') self.write_error(PayloadTooLarge('Payload Too Large'))
self.write_error(exception)
try: try:
value = value.decode() value = value.decode()
except UnicodeDecodeError: except UnicodeDecodeError:
@ -433,7 +424,7 @@ class HttpProtocol(asyncio.Protocol):
self.log_response(response) self.log_response(response)
try: try:
self.transport.close() self.transport.close()
except AttributeError as e: except AttributeError:
logger.debug('Connection lost before server could close it.') logger.debug('Connection lost before server could close it.')
def bail_out(self, message, from_error=False): def bail_out(self, message, from_error=False):
@ -443,8 +434,7 @@ class HttpProtocol(asyncio.Protocol):
self.transport.get_extra_info('peername')) self.transport.get_extra_info('peername'))
logger.debug('Exception:\n%s', traceback.format_exc()) logger.debug('Exception:\n%s', traceback.format_exc())
else: else:
exception = ServerError(message) self.write_error(ServerError(message))
self.write_error(exception)
logger.error(message) logger.error(message)
def cleanup(self): def cleanup(self):