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 |
| [email protected] |
-------------------------------------------^[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)) {