Loading ndb/src/common/portlib/NdbTCP.cpp +32 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ Ndb_getInAddr(struct in_addr * dst, const char *address) { int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) { #ifdef HAVE_POLL struct pollfd pfd[1]; int r; Loading @@ -97,4 +98,35 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) return 1; 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 */ } ndb/src/common/portlib/win32/NdbTCP.c +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) FD_SET(sock, &writefds); FD_SET(sock, &errorfds); if(select(1, &readfds, &writefds, &errorfds, &t)==SOCKET_ERROR) if(select(1, &readfds, &writefds, &errorfds, &tv)==SOCKET_ERROR) return 1; if(FD_ISSET(sock,&errorfds)) Loading Loading
ndb/src/common/portlib/NdbTCP.cpp +32 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ Ndb_getInAddr(struct in_addr * dst, const char *address) { int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) { #ifdef HAVE_POLL struct pollfd pfd[1]; int r; Loading @@ -97,4 +98,35 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) return 1; 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 */ }
ndb/src/common/portlib/win32/NdbTCP.c +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ int Ndb_check_socket_hup(NDB_SOCKET_TYPE sock) FD_SET(sock, &writefds); FD_SET(sock, &errorfds); if(select(1, &readfds, &writefds, &errorfds, &t)==SOCKET_ERROR) if(select(1, &readfds, &writefds, &errorfds, &tv)==SOCKET_ERROR) return 1; if(FD_ISSET(sock,&errorfds)) Loading