diff options
Diffstat (limited to 'src/wsocket.c')
-rw-r--r-- | src/wsocket.c | 16 |
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 | \*-------------------------------------------------------------------------*/ | ||
133 | int 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 | /*-------------------------------------------------------------------------*\ |