]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
iostream: resolve reads that may be completed while closing
authorMin RK <benjaminrk@gmail.com>
Thu, 1 Aug 2019 11:51:12 +0000 (13:51 +0200)
committerBen Darnell <ben@bendarnell.com>
Sat, 1 Feb 2020 17:22:10 +0000 (12:22 -0500)
fixes issue that a read may fail with StreamClosedError
if stream is closed mid-read

tornado/iostream.py

index 89d87a5666b5cd4a6081f17379e545b93efead62..d8f390371c9377e00c95b53c3386dfe5c97c81ad 100644 (file)
@@ -599,6 +599,11 @@ class BaseIOStream(object):
             if self._read_until_close:
                 self._read_until_close = False
                 self._finish_read(self._read_buffer_size, False)
+            elif self._read_future is not None:
+                # resolve reads that are pending and ready to complete
+                pos = self._find_read_pos()
+                if pos is not None:
+                    self._read_from_buffer(pos)
             if self._state is not None:
                 self.io_loop.remove_handler(self.fileno())
                 self._state = None