Acquire and release the GIL around select callbacks.
[mLib-python] / conn.pyx
index e485f5d..0bb0ee7 100644 (file)
--- a/conn.pyx
+++ b/conn.pyx
@@ -74,7 +74,7 @@ cdef class SelConnect:
   def error(me, errno, strerror):
     return _maybecall(me._error, ())
 
-cdef void _connfunc(int fd, void *arg):
+cdef void _connfunc2(int fd, void *arg):
   cdef SelConnect c
   c = <SelConnect>arg
   c._dead()
@@ -83,5 +83,9 @@ cdef void _connfunc(int fd, void *arg):
     c.error(errno, strerror(errno))
   else:
     c.connected()
+cdef void _connfunc(int fd, void *arg):
+  PyEval_AcquireLock()
+  _connfunc2(fd, arg)
+  PyEval_ReleaseLock()
 
 #----- That's all, folks ----------------------------------------------------