From 8a7832a8d87cadbc8e563e0e9f073fb6ba221626 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Sat, 8 Apr 2017 15:18:09 -0700 Subject: [PATCH] Handle socket error in FileResponse #1773 --- aiohttp/web_fileresponse.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aiohttp/web_fileresponse.py b/aiohttp/web_fileresponse.py index 772b8a97bab..99af2b08051 100644 --- a/aiohttp/web_fileresponse.py +++ b/aiohttp/web_fileresponse.py @@ -6,6 +6,7 @@ from . import hdrs from .helpers import create_future from .http_writer import PayloadWriter +from .log import server_logger from .web_exceptions import (HTTPNotModified, HTTPOk, HTTPPartialContent, HTTPRequestRangeNotSatisfiable) from .web_response import StreamResponse @@ -36,6 +37,7 @@ def _sendfile_cb(self, fut, out_fd, in_fd, loop.remove_writer(out_fd) if fut.cancelled(): return + try: n = os.sendfile(out_fd, in_fd, offset, count) if n == 0: # EOF reached @@ -72,6 +74,9 @@ def sendfile(self, fobj, count): fut = create_future(loop) self._sendfile_cb(fut, out_fd, in_fd, offset, count, loop, False) yield from fut + except: + server_logger.debug('Socket error') + self._transport.close() finally: out_socket.close()