summaryrefslogtreecommitdiff
path: root/evport.c
diff options
context:
space:
mode:
Diffstat (limited to 'evport.c')
-rw-r--r--evport.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/evport.c b/evport.c
index 55bbe800..32e373c0 100644
--- a/evport.c
+++ b/evport.c
@@ -303,8 +303,14 @@ evport_dispatch(struct event_base *base, struct timeval *tv)
}
}
- if ((res = port_getn(epdp->ed_port, pevtlist, EVENTS_PER_GETN,
- (unsigned int *) &nevents, ts_p)) == -1) {
+ EVBASE_RELEASE_LOCK(base, EVTHREAD_WRITE, th_base_lock);
+
+ res = port_getn(epdp->ed_port, pevtlist, EVENTS_PER_GETN,
+ (unsigned int *) &nevents, ts_p);
+
+ EVBASE_ACQUIRE_LOCK(base, EVTHREAD_WRITE, th_base_lock);
+
+ if (res == -1) {
if (errno == EINTR || errno == EAGAIN) {
evsig_process(base);
return (0);