Hi,

Maybe the patch is required as an attachment? Here it is.
Can it be included in apr?

Regards,
Eric

--- apr.orig/poll/unix/select.c 2009-10-02 18:24:00.000000000 +0200
+++ apr/poll/unix/select.c      2011-07-07 14:55:29.000000000 +0200
@@ -149,6 +149,14 @@
             break;
         }
         if (FD_ISSET(fd, &readset)) {
+            char c;
+            int r = recv(fd, &c, 1, MSG_PEEK);
+            if (r == 0) {
+                aprset[i].rtnevents |= APR_POLLHUP;
+            }
+            else if (r < 0) {
+                aprset[i].rtnevents |= APR_POLLERR;
+            }
             aprset[i].rtnevents |= APR_POLLIN;
         }
         if (FD_ISSET(fd, &writeset)) {
@@ -399,6 +407,14 @@
             pollset->p->result_set[j] = pollset->p->query_set[i];
             pollset->p->result_set[j].rtnevents = 0;
             if (FD_ISSET(fd, &readset)) {
+                char c;
+                int r = recv(fd, &c, 1, MSG_PEEK);
+                if (r == 0) {
+                    pollset->p->result_set[j].rtnevents |= APR_POLLHUP;
+                }
+                else if (r < 0) {
+                    pollset->p->result_set[j].rtnevents |= APR_POLLERR;
+                }
                 pollset->p->result_set[j].rtnevents |= APR_POLLIN;
             }
             if (FD_ISSET(fd, &writeset)) {



--
-------------------------------------------
| Eric van der Maarel                     |
| NEDAP IDEAS                             |
| eric.vandermaa...@nedap.com             |
-------------------------------------------^[ZZ
--- apr.orig/poll/unix/select.c 2009-10-02 18:24:00.000000000 +0200
+++ apr/poll/unix/select.c      2011-07-07 14:55:29.000000000 +0200
@@ -149,6 +149,14 @@
             break;
         }
         if (FD_ISSET(fd, &readset)) {
+            char c;
+            int r = recv(fd, &c, 1, MSG_PEEK);
+            if (r == 0) {
+                aprset[i].rtnevents |= APR_POLLHUP;
+            }
+            else if (r < 0) {
+                aprset[i].rtnevents |= APR_POLLERR;
+            }
             aprset[i].rtnevents |= APR_POLLIN;
         }
         if (FD_ISSET(fd, &writeset)) {
@@ -399,6 +407,14 @@
             pollset->p->result_set[j] = pollset->p->query_set[i];
             pollset->p->result_set[j].rtnevents = 0;
             if (FD_ISSET(fd, &readset)) {
+                char c;
+                int r = recv(fd, &c, 1, MSG_PEEK);
+                if (r == 0) {
+                    pollset->p->result_set[j].rtnevents |= APR_POLLHUP;
+                }
+                else if (r < 0) {
+                    pollset->p->result_set[j].rtnevents |= APR_POLLERR;
+                }
                 pollset->p->result_set[j].rtnevents |= APR_POLLIN;
             }
             if (FD_ISSET(fd, &writeset)) {

Reply via email to