Skip to content

Commit 39ab304

Browse files
committed
Cleanup CORK flag on exceptions
1 parent fa7d33b commit 39ab304

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

aiohttp/server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ def handle_error(self, status=500, message=None,
359359
response.send_headers()
360360

361361
response.write(html)
362+
# disable CORK, enable NODELAY if needed
363+
self.writer.set_tcp_nodelay(True)
362364
drain = response.write_eof()
363365

364366
self.log_access(message, None, response, self._loop.time() - now)

aiohttp/web_reqrep.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -701,8 +701,6 @@ def _start(self, request):
701701
request.version,
702702
not keep_alive,
703703
self._reason)
704-
resp_impl.transport.set_tcp_nodelay(self._tcp_nodelay)
705-
resp_impl.transport.set_tcp_cork(self._tcp_cork)
706704

707705
self._copy_cookies()
708706

@@ -722,6 +720,8 @@ def _start(self, request):
722720
for key, val in headers:
723721
resp_impl.add_header(key, val)
724722

723+
resp_impl.transport.set_tcp_nodelay(self._tcp_nodelay)
724+
resp_impl.transport.set_tcp_cork(self._tcp_cork)
725725
resp_impl.send_headers()
726726
return resp_impl
727727

@@ -847,10 +847,12 @@ def text(self, text):
847847

848848
@asyncio.coroutine
849849
def write_eof(self):
850-
body = self._body
851-
if body is not None:
852-
self.write(body)
853-
self.set_tcp_nodelay(True)
850+
try:
851+
body = self._body
852+
if body is not None:
853+
self.write(body)
854+
finally:
855+
self.set_tcp_nodelay(True)
854856
yield from super().write_eof()
855857

856858

aiohttp/web_urldispatcher.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,12 +288,14 @@ def handle(self, request):
288288

289289
resp.content_length = file_size
290290
resp.set_tcp_cork(True)
291-
yield from resp.prepare(request)
291+
try:
292+
yield from resp.prepare(request)
292293

293-
with open(filepath, 'rb') as f:
294-
yield from self._sendfile(request, resp, f, file_size)
294+
with open(filepath, 'rb') as f:
295+
yield from self._sendfile(request, resp, f, file_size)
295296

296-
resp.set_tcp_nodelay(True)
297+
finally:
298+
resp.set_tcp_nodelay(True)
297299

298300
return resp
299301

0 commit comments

Comments
 (0)