errrno can by freak accident become EINTR on DOS or

Windows (unrelated to select). select() can never set errno
to EINTR on Windows.
This commit is contained in:
Gisle Vanem 2005-01-15 09:26:07 +00:00
Родитель cf51f7fb65
Коммит f5b8a26d9a
1 изменённых файлов: 8 добавлений и 4 удалений

Просмотреть файл

@ -39,13 +39,17 @@
#error "We can't compile without select() support!"
#endif
#include "select.h"
#ifdef __BEOS__
/* BeOS has FD_SET defined in socket.h */
#include <socket.h>
#endif
#include <curl/curl.h>
#include "urldata.h"
#include "connect.h"
#include "select.h"
#ifdef WIN32
#define VALID_SOCK(s) (1) /* Win-sockets are not in range [0..FD_SETSIZE> */
#else
@ -148,7 +152,7 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms)
do {
r = select(maxfd + 1, &fds_read, &fds_write, &fds_err, &timeout);
} while((r == -1) && (errno == EINTR));
} while((r == -1) && (Curl_ourerrno() == EINTR));
if (r < 0)
return -1;
@ -233,7 +237,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
do {
r = select(maxfd + 1, &fds_read, &fds_write, &fds_err, ptimeout);
} while((r == -1) && (errno == EINTR));
} while((r == -1) && (Curl_ourerrno() == EINTR));
if (r < 0)
return -1;