diff --git a/gevent_openssl/SSL.py b/gevent_openssl/SSL.py index ce9f4e9..c02bd01 100644 --- a/gevent_openssl/SSL.py +++ b/gevent_openssl/SSL.py @@ -73,5 +73,17 @@ def recv(self, bufsiz, flags=0): return '' raise + def recv_into(self, buffer, nbytes=None, flags=None): + try: + return self.__iowait(self._connection.recv_into, buffer, nbytes, flags) + except OpenSSL.SSL.ZeroReturnError: + return '' + except OpenSSL.SSL.SysCallError as e: + if e[0] == -1 and 'Unexpected EOF' in e[1]: + # errors when reading empty strings are expected and can be + # ignored + return '' + raise + def shutdown(self): return self.__iowait(self._connection.shutdown)