Commit c6ff73b9 authored by unknown's avatar unknown

BUG#13136 NdbTCP.cpp compile failure on OSX 10.2

use select if poll is unavailable.


ndb/src/common/portlib/NdbTCP.cpp:
  Implement Ndb_check_socket_hup for systems without poll(2)
ndb/src/common/portlib/win32/NdbTCP.c:
  fix typo (found while fixing this bug)
parent afbfd12e
...@@ -86,6 +86,7 @@ Ndb_getInAddr(struct in_addr * dst, const char *address) { ...@@ -86,6 +86,7 @@ Ndb_getInAddr(struct in_addr * dst, const char *address) {
int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock)
{ {
#ifdef HAVE_POLL
struct pollfd pfd[1]; struct pollfd pfd[1];
int r; int r;
...@@ -97,4 +98,35 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) ...@@ -97,4 +98,35 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock)
return 1; return 1;
return 0; return 0;
#else /* HAVE_POLL */
fd_set readfds, writefds, errorfds;
struct timeval tv= {0,0};
int s_err;
int s_err_size= sizeof(s_err);
FD_ZERO(&readfds);
FD_ZERO(&writefds);
FD_ZERO(&errorfds);
FD_SET(sock, &readfds);
FD_SET(sock, &writefds);
FD_SET(sock, &errorfds);
if(select(1, &readfds, &writefds, &errorfds, &tv)<0)
return 1;
if(FD_ISSET(sock,&errorfds))
return 1;
s_err=0;
if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (char*) &s_err, &s_err_size) != 0)
return(1);
if (s_err)
{ /* getsockopt could succeed */
return(1); /* but return an error... */
}
return 0;
#endif /* HAVE_POLL */
} }
...@@ -52,7 +52,7 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) ...@@ -52,7 +52,7 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock)
FD_SET(sock, &writefds); FD_SET(sock, &writefds);
FD_SET(sock, &errorfds); FD_SET(sock, &errorfds);
if(select(1, &readfds, &writefds, &errorfds, &t)==SOCKET_ERROR) if(select(1, &readfds, &writefds, &errorfds, &tv)==SOCKET_ERROR)
return 1; return 1;
if(FD_ISSET(sock,&errorfds)) if(FD_ISSET(sock,&errorfds))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment