m2crypto blocking all other threads

Rune Froysa <[email protected]>
Newsgroups gmane.comp.python.cryptography
Message-ID <[email protected]>
I'm using m2crypto for a SSL-based xmlrpc service.  This service is
frequently DOSed by what appears to be a bug in m2crypto: it blocks
all other threads at various points.  I've attached a small program
that shows this behaviour.  Start the server.  It will keep printing
"test" from a separate thread.  Now, telnet to the 9443 port and do
nothing.  You'll notice that after the "LOOP: SSL accept:
before/accept initialization" message, no more "test" messages are
printed.  The server will not respond to any new connections until
this connection has done something.  This has been verified with v
0.07, 0.09, 0.13, 0.15.

At some points we experience processes that according to strace is
waiting for a read on a remote socket, while a check on the remote
host reveals that no process is talking on that socket anymore.  I'm
not sure if that is related.

#!/usr/bin/env python
import sys, time, threading
demo_dir='/tmp/m2crypto-0.15/demo/ssl'
sys.path.insert(0, demo_dir)

from https_srv import *

def my_wt():
    while True:
        time.sleep(0.5)
        print "test"

if __name__ == '__main__':
    threading.Thread(target=my_wt).start()
    ctx = init_context('sslv23', '%s/server.pem' % demo_dir, '%s/ca.pem' % demo_dir, 
                       SSL.verify_none)
    httpsd = HTTPS_Server(('', 9443), HTTP_Handler, ctx)
    httpsd.serve_forever()

BTW: under 0.15, the https_srv.py complains from line 126 -> SSL/Context.py: 118:
TypeError: ssl_ctx_load_verify_locations() argument 3 must be string, not None

-- 
Rune Frøysa
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.