aboutsummaryrefslogtreecommitdiff
path: root/src/wsocket.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wsocket.c')
-rw-r--r--src/wsocket.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/wsocket.c b/src/wsocket.c
index 0f6005f..b533eae 100644
--- a/src/wsocket.c
+++ b/src/wsocket.c
@@ -22,7 +22,8 @@ int sock_open(void) {
22 WORD wVersionRequested = MAKEWORD(2, 0); 22 WORD wVersionRequested = MAKEWORD(2, 0);
23 int err = WSAStartup(wVersionRequested, &wsaData ); 23 int err = WSAStartup(wVersionRequested, &wsaData );
24 if (err != 0) return 0; 24 if (err != 0) return 0;
25 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0) { 25 if ((LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0) &&
26 (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)) {
26 WSACleanup(); 27 WSACleanup();
27 return 0; 28 return 0;
28 } 29 }
@@ -124,16 +125,8 @@ int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) {
124 /* zero timeout case optimization */ 125 /* zero timeout case optimization */
125 if (tm_iszero(tm)) return IO_TIMEOUT; 126 if (tm_iszero(tm)) return IO_TIMEOUT;
126 /* we wait until something happens */ 127 /* we wait until something happens */
127 return sock_connected(ps, tm); 128 err = sock_waitfd(ps, WAITFD_C, tm);
128} 129 if (err == IO_CLOSED) {
129
130/*-------------------------------------------------------------------------*\
131* Check if socket is connected
132\*-------------------------------------------------------------------------*/
133int sock_connected(p_sock ps, p_tm tm) {
134 int err;
135 /* give windows time to find out what is up (yes, disgusting) */
136 if ((err = sock_waitfd(ps, WAITFD_C, tm)) == IO_CLOSED) {
137 int len = sizeof(err); 130 int len = sizeof(err);
138 /* give windows time to set the error (yes, disgusting) */ 131 /* give windows time to set the error (yes, disgusting) */
139 Sleep(10); 132 Sleep(10);
@@ -143,6 +136,7 @@ int sock_connected(p_sock ps, p_tm tm) {
143 * "unknown error", but it's not really our fault */ 136 * "unknown error", but it's not really our fault */
144 return err > 0? err: IO_UNKNOWN; 137 return err > 0? err: IO_UNKNOWN;
145 } else return err; 138 } else return err;
139
146} 140}
147 141
148/*-------------------------------------------------------------------------*\ 142/*-------------------------------------------------------------------------*\