diff --git a/CHANGES b/CHANGES index 7c60922f4..b68e8fa51 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,10 @@ Changelog +Daniel (24 September 2006) +- Cory Nelson made libcurl use the WSAPoll() function if built for Windows + Vista (_WIN32_WINNT >= 0x0600) + Daniel (23 September 2006) - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only encrypt the control connection and use the data connection "plain". diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 76d346e5c..70a33b5bf 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -11,6 +11,7 @@ Curl and libcurl 7.16.0 This release includes the following changes: + o uses WSAPoll() on Windows Vista o (FTP) --ftp-ssl-control was added o CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid added o CURLMOPT_PIPELINING added for enabling pipelined transfers @@ -54,6 +55,6 @@ advice from friends like these: Domenico Andreoli, Armel Asselin, Gisle Vanem, Yang Tse, Andrew Biggs, Peter Sylvester, David McCreedy, Dmitriy Sergeyev, Dmitry Rechkin, Jari Sundell, Ravi Pratap, Michele Bini, Jeff Pohlmeyer, Michael Wallner, - Mike Protts + Mike Protts, Cory Nelson Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/select.c b/lib/select.c index 42a9a5c35..4a7fee492 100644 --- a/lib/select.c +++ b/lib/select.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2005, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -74,7 +74,7 @@ */ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) { -#ifdef HAVE_POLL_FINE +#if defined(HAVE_POLL_FINE) || defined(CURL_HAVE_WSAPOLL) struct pollfd pfd[2]; int num; int r; @@ -92,9 +92,13 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) num++; } +#ifdef HAVE_POLL_FINE do { r = poll(pfd, num, timeout_ms); } while((r == -1) && (errno == EINTR)); +#else + r = WSAPoll(pfd, num, timeout_ms); +#endif if (r < 0) return -1; @@ -194,6 +198,8 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) do { r = poll(ufds, nfds, timeout_ms); } while((r == -1) && (errno == EINTR)); +#elif defined(CURL_HAVE_WSAPOLL) + r = WSAPoll(ufds, nfds, timeout_ms); #else struct timeval timeout; struct timeval *ptimeout; diff --git a/lib/select.h b/lib/select.h index f448b8460..e0844b1d6 100644 --- a/lib/select.h +++ b/lib/select.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2004, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -25,6 +25,10 @@ #ifdef HAVE_SYS_POLL_H #include +#elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) +/* for Vista, use WSAPoll(). */ +#include +#define CURL_HAVE_WSAPOLL #else #define POLLIN 0x01