gevent_openssl
gevent_openssl copied to clipboard
Connection.sendall is dangerously broken (can cause SSL3_WRITE_PENDING error)
Currently calling Connection.sendall can cause a loop which re-sends data because __iowait will keep calling _connection.sendall with the same buffer, even if part of it has already been sent.
The fix, I believe, is to have a custom implementation of sendall which loops calling send, something like this:
def sendall(self, buf, flags=0):
while buf:
sent = self.send(buf, flags)
buf = buf[sent:]
(albeit with the extra fiddly bits to make sure it works correctly for memoryview and buffer objects)
See also: https://github.com/gevent/gevent/issues/736
Hey folk, any word on a fix here?