diff options
Diffstat (limited to 'leakcheck/thread-crash.py')
-rw-r--r-- | leakcheck/thread-crash.py | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/leakcheck/thread-crash.py b/leakcheck/thread-crash.py deleted file mode 100644 index a1ebbdd..0000000 --- a/leakcheck/thread-crash.py +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright (C) Jean-Paul Calderone -# See LICENSE for details. -# -# Stress tester for thread-related bugs in ssl_Connection_send and -# ssl_Connection_recv in src/ssl/connection.c for usage of a single -# Connection object simultaneously in multiple threads. In 0.7 and earlier, -# this will somewhat reliably cause Python to abort with a "tstate mix-up" -# almost immediately, due to the incorrect sharing between threads of the -# `tstate` field of the connection object. - - -from socket import socket -from threading import Thread - -from OpenSSL.SSL import Connection, Context, TLSv1_METHOD - -def send(conn): - while 1: - for i in xrange(1024 * 32): - conn.send('x') - print 'Sent 32KB on', hex(id(conn)) - - -def recv(conn): - while 1: - for i in xrange(1024 * 64): - conn.recv(1) - print 'Received 64KB on', hex(id(conn)) - - -def main(): - port = socket() - port.bind(('', 0)) - port.listen(5) - - client = socket() - client.setblocking(False) - client.connect_ex(port.getsockname()) - client.setblocking(True) - - server = port.accept()[0] - - clientCtx = Context(TLSv1_METHOD) - clientCtx.set_cipher_list('ALL:ADH') - clientCtx.load_tmp_dh('dhparam.pem') - - sslClient = Connection(clientCtx, client) - sslClient.set_connect_state() - - serverCtx = Context(TLSv1_METHOD) - serverCtx.set_cipher_list('ALL:ADH') - serverCtx.load_tmp_dh('dhparam.pem') - - sslServer = Connection(serverCtx, server) - sslServer.set_accept_state() - - t1 = Thread(target=send, args=(sslClient,)) - t2 = Thread(target=send, args=(sslServer,)) - t3 = Thread(target=recv, args=(sslClient,)) - t4 = Thread(target=recv, args=(sslServer,)) - - t1.start() - t2.start() - t3.start() - t4.start() - t1.join() - t2.join() - t3.join() - t4.join() - -main() |