def recv (self, buffer_size):
if self._closed:
# usually handshaking failure, already handled exception
return b''
try:
data = self.socket.recv (buffer_size)
if not data:
self.handle_close (700, "Connection closed unexpectedly")
return b''
else:
self.set_event_time ()
return data
except ssl.SSLError as why:
if why.errno == ssl.SSL_ERROR_WANT_READ:
try:
raise BlockingIOError
except NameError:
raise socket.error (EWOULDBLOCK)
# closed connection
elif why.errno in (ssl.SSL_ERROR_ZERO_RETURN, ssl.SSL_ERROR_EOF):
self.handle_close (700, "Connection closed by SSL_ERROR_ZERO_RETURN or SSL_ERROR_EOF")
return b''
else:
raise
评论列表
文章目录