Acquire and release the GIL around select callbacks.
[mLib-python] / selpk.pyx
index fe85a9f..5d7e9cb 100644 (file)
--- a/selpk.pyx
+++ b/selpk.pyx
@@ -84,8 +84,8 @@ cdef class SelPacketBuffer:
   def eof(me):
     return _maybecall(me._eof, ())
 
-cdef void _selpkfunc(unsigned char *p, size_t n, pkbuf *pk,
-                     size_t *keep, void *arg):
+cdef void _selpkfunc2(unsigned char *p, size_t n, pkbuf *pk,
+                      size_t *keep, void *arg):
   cdef SelPacketBuffer pb
   cdef void *rp
   cdef int rn
@@ -101,5 +101,10 @@ cdef void _selpkfunc(unsigned char *p, size_t n, pkbuf *pk,
       if rn:
         memcpy(p + n - rn, rp, rn)
         keep[0] = rn
+cdef void _selpkfunc(unsigned char *p, size_t n, pkbuf *pk,
+                     size_t *keep, void *arg):
+  PyEval_AcquireLock()
+  _selpkfunc2(p, n, pk, keep, arg)
+  PyEval_ReleaseLock()
 
 #----- That's all, folks ----------------------------------------------------