chiark / gitweb /
Acquire and release the GIL around select callbacks.
[mLib-python] / bres.pyx
index 162ff0268f9cdd3a31f98a77d79d26aaedbd79db..ebc62620af9f07df85b455643ea1b0c9f257cea3 100644 (file)
--- a/bres.pyx
+++ b/bres.pyx
@@ -88,7 +88,7 @@ cdef class SelResolveByAddr (SelResolve):
   def __init__(me, addr, resolvedproc = None, failedproc = None):
     pass
 
-cdef void _resfunc(hostent *h, void *arg):
+cdef void _resfunc2(hostent *h, void *arg):
   cdef SelResolve r
   cdef int i
   r = <SelResolve>arg
@@ -107,6 +107,10 @@ cdef void _resfunc(hostent *h, void *arg):
       addr.append(inet_ntoa((<in_addr *>h.h_addr_list[i])[0]))
       i = i + 1
     r.resolved(h.h_name, alias, addr)
+cdef void _resfunc(hostent *h, void *arg):
+  PyEval_AcquireLock()
+  _resfunc2(h, arg)
+  PyEval_ReleaseLock()
 
 bres_exec(NULL)
 bres_init(&_sel)