You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by gr...@apache.org on 2007/01/29 16:56:42 UTC
svn commit: r501085 - in /apr/apr/trunk:
include/arch/unix/apr_arch_poll_private.h poll/unix/epoll.c
Author: gregames
Date: Mon Jan 29 07:56:41 2007
New Revision: 501085
URL: http://svn.apache.org/viewvc?view=rev&rev=501085
Log:
reverting rev 500321 pending investigation of problem reported by jorton.
This line, and those below, will be ignored--
M include/arch/unix/apr_arch_poll_private.h
M poll/unix/epoll.c
Modified:
apr/apr/trunk/include/arch/unix/apr_arch_poll_private.h
apr/apr/trunk/poll/unix/epoll.c
Modified: apr/apr/trunk/include/arch/unix/apr_arch_poll_private.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/arch/unix/apr_arch_poll_private.h?view=diff&rev=501085&r1=501084&r2=501085
==============================================================================
--- apr/apr/trunk/include/arch/unix/apr_arch_poll_private.h (original)
+++ apr/apr/trunk/include/arch/unix/apr_arch_poll_private.h Mon Jan 29 07:56:41 2007
@@ -91,8 +91,8 @@
typedef struct pfd_elem_t pfd_elem_t;
struct pfd_elem_t {
- apr_pollfd_t pfd;
APR_RING_ENTRY(pfd_elem_t) link;
+ apr_pollfd_t pfd;
};
#endif
Modified: apr/apr/trunk/poll/unix/epoll.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/poll/unix/epoll.c?view=diff&rev=501085&r1=501084&r2=501085
==============================================================================
--- apr/apr/trunk/poll/unix/epoll.c (original)
+++ apr/apr/trunk/poll/unix/epoll.c Mon Jan 29 07:56:41 2007
@@ -219,10 +219,18 @@
pollset_lock_rings();
if (!APR_RING_EMPTY(&(pollset->query_ring), pfd_elem_t, link)) {
- ep = (pfd_elem_t *) descriptor;
+ for (ep = APR_RING_FIRST(&(pollset->query_ring));
+ ep != APR_RING_SENTINEL(&(pollset->query_ring),
+ pfd_elem_t, link);
+ ep = APR_RING_NEXT(ep, link)) {
- APR_RING_REMOVE(ep, link);
- APR_RING_INSERT_TAIL(&(pollset->dead_ring), ep, pfd_elem_t, link);
+ if (descriptor->desc.s == ep->pfd.desc.s) {
+ APR_RING_REMOVE(ep, link);
+ APR_RING_INSERT_TAIL(&(pollset->dead_ring),
+ ep, pfd_elem_t, link);
+ break;
+ }
+ }
}
pollset_unlock_rings();