diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-10-31 15:07:59 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-10-31 15:07:59 +0000 |
commit | 60e5ad760f21d676fa37ff7026ce521ebbbe3bc9 (patch) | |
tree | fc399d968e3a5de6e263248b6f0784ea5743d5a2 /cpp/src/IceSSL/Util.cpp | |
parent | Fix (diff) | |
download | ice-60e5ad760f21d676fa37ff7026ce521ebbbe3bc9.tar.bz2 ice-60e5ad760f21d676fa37ff7026ce521ebbbe3bc9.tar.xz ice-60e5ad760f21d676fa37ff7026ce521ebbbe3bc9.zip |
Use poll() instead of select() on Unix.
Diffstat (limited to 'cpp/src/IceSSL/Util.cpp')
-rw-r--r-- | cpp/src/IceSSL/Util.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cpp/src/IceSSL/Util.cpp b/cpp/src/IceSSL/Util.cpp index 8595a80293e..574d570b03c 100644 --- a/cpp/src/IceSSL/Util.cpp +++ b/cpp/src/IceSSL/Util.cpp @@ -276,6 +276,7 @@ IceSSL::DHParams::get(int keyLength) static bool selectReadWrite(SOCKET fd, bool read, int timeout) { +#ifdef _WIN32 fd_set rFdSet, wFdSet; FD_ZERO(&rFdSet); FD_ZERO(&wFdSet); @@ -287,9 +288,15 @@ selectReadWrite(SOCKET fd, bool read, int timeout) { FD_SET(fd, &wFdSet); } +#else + struct pollfd pollfd[1]; + pollfd[0].fd = fd; + pollfd[0].events = read ? POLLIN : POLLOUT; +#endif repeatSelect: int ret; +#ifdef _WIN32 if(timeout >= 0) { struct timeval tv; @@ -301,6 +308,9 @@ repeatSelect: { ret = ::select(static_cast<int>(fd) + 1, &rFdSet, &wFdSet, 0, 0); } +#else + ret = ::poll(pollfd, 1, timeout); +#endif if(ret == 0) { |