def test_ssl_connect2 (self): def accept_once (listenfd): try: conn, addr = listenfd.accept() conn.write('hello\r\n') shutdown_safe(conn) conn.close() finally: shutdown_safe(listenfd) listenfd.close() server = ssl_listener(('0.0.0.0', 0), self.certificate_file, self.private_key_file) greenthread.spawn(accept_once, server) raw_client = connect(('127.0.0.1', server.getsockname()[1])) client = util.wrap_ssl(raw_client) fd = socket._fileobject(client, 'rb', 8192) assert fd.readline() == 'hello\r\n' try: self.assertEquals('', fd.read(10)) except SSL.ZeroReturnError: # if it's a GreenSSL object it'll do this pass shutdown_safe(client) client.close()
def accept_once (listenfd): try: conn, addr = listenfd.accept() conn.write('hello\r\n') shutdown_safe(conn) conn.close() finally: shutdown_safe(listenfd) listenfd.close()
def test_ssl_connect (self): def serve (listener): sock, addr = listener.accept() stuff = sock.read(8192) sock = listen_ssl_socket() server_coro = evy.spawn(serve, sock) raw_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ssl_client = util.wrap_ssl(raw_client) ssl_client.connect(('127.0.0.1', sock.getsockname()[1])) ssl_client.write('abc') shutdown_safe(ssl_client) ssl_client.close() server_coro.wait()
def test_ssl_close (self): def serve (listener): sock, addr = listener.accept() stuff = sock.read(8192) try: self.assertEquals("", sock.read(8192)) except SSL.ZeroReturnError: pass sock = listen_ssl_socket() server_coro = evy.spawn(serve, sock) raw_client = connect(('127.0.0.1', sock.getsockname()[1])) client = util.wrap_ssl(raw_client) client.write('X') shutdown_safe(client) client.close() server_coro.wait()
def test_ssl_sending_messages (self): s = evy.wrap_ssl(listen(('localhost', 0)), certfile = certificate_file, keyfile = private_key_file, server_side = True) self.spawn_server(sock = s) connect_data = [ "GET /echo HTTP/1.1", "Upgrade: WebSocket", "Connection: Upgrade", "Host: localhost:%s" % self.port, "Origin: http://localhost:%s" % self.port, "Sec-WebSocket-Protocol: ws", "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5", "Sec-WebSocket-Key2: 12998 5 Y3 1 .P00", ] sock = evy.wrap_ssl(connect( ('localhost', self.port))) sock.sendall('\r\n'.join(connect_data) + '\r\n\r\n^n:ds[4U') first_resp = sock.recv(1024) # make sure it sets the wss: protocol on the location header loc_line = [x for x in first_resp.split("\r\n") if x.lower().startswith('sec-websocket-location')][0] self.assert_("wss://localhost" in loc_line, "Expecting wss protocol in location: %s" % loc_line) sock.sendall('\x00hello\xFF') result = sock.recv(1024) self.assertEqual(result, '\x00hello\xff') sock.sendall('\x00start') sleep(0.001) sock.sendall(' end\xff') result = sock.recv(1024) self.assertEqual(result, '\x00start end\xff') shutdown_safe(sock) sock.close() sleep(0.01)
def finish(self): BaseHTTPServer.BaseHTTPRequestHandler.finish(self) sockets.shutdown_safe(self.connection) self.connection.close()
def finish (self): BaseHTTPServer.BaseHTTPRequestHandler.finish(self) sockets.shutdown_safe(self.connection) self.connection.close()
def serve (listener): sock, addr = listener.accept() sock.write('content') shutdown_safe(sock) sock.close()