]> 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>
Mon, 2 Mar 2020 18:52:45 +0000 (13:52 -0500)
fixes issue that a read may fail with StreamClosedError
if stream is closed mid-read

tornado/iostream.py

index ee305922dc084b47e4368b0ef631eb6c2aec407b..37aeb94f23d926894e91dcbcd80a7381ebeb0372 100644 (file)
@@ -609,6 +609,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