summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorunknown <tulin@dl145c.mysql.com>2005-09-14 17:58:20 +0200
committerunknown <tulin@dl145c.mysql.com>2005-09-14 17:58:20 +0200
commitee2125c919b73b44c028716af14d2c6d311605df (patch)
treed46146fa982f3c243e7cf4778b516f9c21cce3d6 /storage
parent24f047831f9bdcbef5762a3be1f6d506422e0642 (diff)
parent528c3a71f847afe6be5bdf460be57512eada71cb (diff)
downloadmariadb-git-ee2125c919b73b44c028716af14d2c6d311605df.tar.gz
merge
sql/mysql_priv.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_acl.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/table.h: Auto merged storage/ndb/src/common/portlib/NdbTCP.cpp: Auto merged storage/ndb/src/common/portlib/win32/NdbTCP.c: Auto merged
Diffstat (limited to 'storage')
-rw-r--r--storage/ndb/src/common/portlib/NdbTCP.cpp32
-rw-r--r--storage/ndb/src/common/portlib/win32/NdbTCP.c2
2 files changed, 33 insertions, 1 deletions
diff --git a/storage/ndb/src/common/portlib/NdbTCP.cpp b/storage/ndb/src/common/portlib/NdbTCP.cpp
index 768292ac7c0..41471548b7e 100644
--- a/storage/ndb/src/common/portlib/NdbTCP.cpp
+++ b/storage/ndb/src/common/portlib/NdbTCP.cpp
@@ -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;
@@ -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 */
}
diff --git a/storage/ndb/src/common/portlib/win32/NdbTCP.c b/storage/ndb/src/common/portlib/win32/NdbTCP.c
index a14cd4409eb..5d6c0ae5c7d 100644
--- a/storage/ndb/src/common/portlib/win32/NdbTCP.c
+++ b/storage/ndb/src/common/portlib/win32/NdbTCP.c
@@ -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))