New submission from Giampaolo Rodola' <[EMAIL PROTECTED]>: As discussed on the python-dev ml I noticed something in the ssl.py code which seems to be wrong. This is the ssl.SSLSocket.recv() method:
def recv (self, buflen=1024, flags=0): if self._sslobj: if flags != 0: raise ValueError( "non-zero flags not allowed in calls to sendall() on %s" % self.__class__) while True: try: return self.read(buflen) except SSLError, x: if x.args[0] == SSL_ERROR_WANT_READ: continue else: raise x else: return socket.recv(self, buflen, flags) I don't know the low levels but that while statement which continues in case of SSL_ERROR_WANT_READ seems to be wrong (blocking), at least when dealing with non-blocking sockets. I think the proper way of doing recv() here is letting SSL_ERROR_WANT_READ propagate and let the upper application (e.g. asyncore) deal with it. ---------- components: Library (Lib) messages: 73342 nosy: giampaolo.rodola, janssen, josiah.carlson, josiahcarlson severity: normal status: open title: ssl.SSLSocket.recv() implementation may not work with non-blocking sockets type: behavior versions: Python 2.6, Python 3.0 _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3890> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com