Greetings, Spotted an early-exit optimisation in poll/unix/poll.c:apr_pollset_poll(). We know the number of signalled descriptors, NUM, returned from the poll() call so we could bust out of the post-processing loop once we've added NUM signalled descriptors to our RESULT_SET. Cheers Gerry Calderhead [gerry@devbox unix]$ rcsdiff -u6 poll.c =================================================================== RCS file: RCS/poll.c,v retrieving revision 1.1 diff -u6 -r1.1 poll.c --- poll.c 2006/01/02 18:30:27 1.1 +++ poll.c 2006/01/02 20:16:14 @@ -259,13 +259,13 @@ j = 0; for (i = 0; i < pollset->nelts; i++) { if (pollset->pollset[i].revents != 0) { pollset->result_set[j] = pollset->query_set[i]; pollset->result_set[j].rtnevents = get_revent(pollset->pollset[i].revents); - j++; + if ((++j)==(*num)) break; } } if (descriptors) *descriptors = pollset->result_set; return APR_SUCCESS; }