diff options
-rw-r--r-- | poll/unix/port.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/poll/unix/port.c b/poll/unix/port.c index 056579e2d..4ecb56bf3 100644 --- a/poll/unix/port.c +++ b/poll/unix/port.c @@ -248,7 +248,8 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, const apr_pollfd_t **descriptors) { apr_os_sock_t fd; - int ret, i, nget; + int ret, i; + unsigned int nget; pfd_elem_t *ep; struct timespec tv, *tvptr; apr_status_t rv = APR_SUCCESS; @@ -303,6 +304,8 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, } else { + pollset_lock_rings(); + for (i = 0; i < nget; i++) { pollset->result_set[i] = (((pfd_elem_t*)(pollset->port_set[i].portev_user))->pfd); @@ -314,6 +317,8 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, pfd_elem_t, link); } + pollset_unlock_rings(); + if (descriptors) { *descriptors = pollset->result_set; } |