Commit f5b8a26d authored by Gisle Vanem's avatar Gisle Vanem
Browse files

errrno can by freak accident become EINTR on DOS or

Windows (unrelated to select). select() can never set errno
to EINTR on Windows.
parent cf51f7fb
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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;