--- sslproto.py.orig 2020-08-04 19:04:51.323355949 +0900 +++ sslproto.py 2020-08-18 14:56:32.573417135 +0900 @@ -11,6 +11,8 @@ from . import transports from .log import logger +# bugfix: IndexError deque index out of range +import threading def _create_transport_context(server_side, server_hostname): if server_side: @@ -454,6 +456,8 @@ self._transport = None self._call_connection_made = call_connection_made self._ssl_handshake_timeout = ssl_handshake_timeout + # bugfix: IndexError deque index out of range + self._write_sync = threading.Lock() def _set_app_protocol(self, app_protocol): self._app_protocol = app_protocol @@ -587,9 +591,11 @@ self._write_appdata(b'') def _write_appdata(self, data): - self._write_backlog.append((data, 0)) - self._write_buffer_size += len(data) - self._process_write_backlog() + # bugfix: IndexError deque index out of range + with self._write_sync: + self._write_backlog.append((data, 0)) + self._write_buffer_size += len(data) + self._process_write_backlog() def _start_handshake(self): if self._loop.get_debug():