summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68>2005-01-06 07:04:24 +0000
committerpquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68>2005-01-06 07:04:24 +0000
commit5fbc6e20867fb8e88c9b4b067d7cd0b4e6c26511 (patch)
tree94f4b20e2c4233e83370fea4b291b7c42e68707b
parentb4c4511b67b9563ad763bb58f9b11593d85b9f7c (diff)
downloadlibapr-5fbc6e20867fb8e88c9b4b067d7cd0b4e6c26511.tar.gz
* Fix compiler warning for type mismatch on nget.
* Add locking to prevent a race condition that the Event MPM hit. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@124350 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--poll/unix/port.c7
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;
}