diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2005-11-13 09:24:06 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2005-11-13 09:24:06 +0000 | 
| commit | c2862742abc76440657190a02a1e92be1e2c01f1 (patch) | |
| tree | d0d4d4f1758e92b242ec90154474665c5c32e1a4 | |
| parent | 8a712eb5afb603465dfe812510dd7077bf626d17 (diff) | |
Thanks to this nice summary of poll() implementations:
http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
connection closure so we check for that case (too) and re-enable poll for
cygwin builds.
| -rw-r--r-- | CHANGES | 7 | ||||
| -rw-r--r-- | RELEASE-NOTES | 2 | ||||
| -rw-r--r-- | configure.ac | 4 | ||||
| -rw-r--r-- | lib/select.c | 2 | 
4 files changed, 11 insertions, 4 deletions
| @@ -8,6 +8,13 @@ +Daniel (13 November 2005) +- Thanks to this nice summary of poll() implementations: +  http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene +  Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote +  connectin closure so we check for that case (too) and re-enable poll for +  cygwin builds. +  Daniel (12 November 2005)  - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things    right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable diff --git a/RELEASE-NOTES b/RELEASE-NOTES index bc2037a0a..0bfb637ac 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -18,7 +18,7 @@ This release includes the following changes:  This release includes the following bugfixes: - o don't use poll() on cygwin, it is defective + o fixed libcurl's use of poll() on cygwin   o the GnuTLS code didn't support client certificates   o TFTP over IPv6 works   o no reverse lookups on IP addresses when ipv6-enabled diff --git a/configure.ac b/configure.ac index 50fa2959c..629f0ba28 100644 --- a/configure.ac +++ b/configure.ac @@ -1591,10 +1591,10 @@ AC_CHECK_DECL(basename, ,  #endif  ) -AC_MSG_CHECKING([if we are Mac OS X or cygwin to disable poll]) +AC_MSG_CHECKING([if we are Mac OS X (to disable poll)])  disable_poll=no  case $host in -  *-*-darwin* | *-*-cygwin) +  *-*-darwin*)      disable_poll="yes";      ;;    *) diff --git a/lib/select.c b/lib/select.c index 634f8efda..f370b1110 100644 --- a/lib/select.c +++ b/lib/select.c @@ -104,7 +104,7 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms)    ret = 0;    num = 0;    if (readfd != CURL_SOCKET_BAD) { -    if (pfd[num].revents & POLLIN) +    if (pfd[num].revents & (POLLIN|POLLHUP))        ret |= CSELECT_IN;      if (pfd[num].revents & POLLERR)        ret |= CSELECT_ERR; | 
