def doSSLShutdown(self, socket): '''Clear the SSL part of a socket.''' socket.set_shutdown(ssl.SENT_SHUTDOWN | ssl.RECEIVED_SHUTDOWN) # Don't close the socket unless negotiation is done. while True: try: socket.do_handshake() except ssl.WantReadError: pass try: state = socket.get_state_string() except AttributeError: # Older pyOpenSSL state = socket.state_string() if state == 'SSL negotiation finished successfully': break # state is None if SSL layer does not support state string # so we fall back to this flag, which some of the time # does not produce the expected results. if state is None and not socket.renegotiate_pending(): break # Allow the handshake to be done. time.sleep(0.01) socket.shutdown()
def handle(socket, addr): socket = pwrtls.wrap_socket(socket, server_side=True, **pwrtls.state_file(statepath)) try: socket.do_handshake() except Exception as e: logging.warn('PTLS Client handshake failure. Closing') else: self._new_conn(socket, addr)
def ssl_do_handshake(socket, *args, **kwargs): """Performs an SSL handshake asynchronously.""" while True: try: return socket.do_handshake() except (_ssl.SSLWantReadError, _ssl.SSLWantWriteError): yield
def get_request(self): (socket, addr) = TCPServer.get_request(self) socket.do_handshake() return (socket, addr)
def ssl_do_handshake(socket, *args, **kwargs): while True: try: return socket.do_handshake(*args, **kwargs) except (_ssl.SSLWantReadError, _ssl.SSLWantWriteError): yield
def get_request(self): (socket, addr) = socketserver.TCPServer.get_request(self) socket.do_handshake() #print(socket.cipher()) return (socket, addr)
def get_request(self): (socket, addr) = SocketServer.TCPServer.get_request(self) socket.do_handshake() return (socket, addr)
def get_request(self): socket, addr = ThreadingTCPServer.get_request(self) print(f"与 {addr} 建立TCP连接") # postpone the handshake socket.do_handshake() return socket, addr