diff options
Diffstat (limited to 'src/inet.c')
-rw-r--r-- | src/inet.c | 6 |
1 files changed, 2 insertions, 4 deletions
@@ -181,7 +181,7 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp) | |||
181 | * Tries to connect to remote address (address, port) | 181 | * Tries to connect to remote address (address, port) |
182 | \*-------------------------------------------------------------------------*/ | 182 | \*-------------------------------------------------------------------------*/ |
183 | const char *inet_tryconnect(p_sock ps, const char *address, | 183 | const char *inet_tryconnect(p_sock ps, const char *address, |
184 | unsigned short port) | 184 | unsigned short port, int timeout) |
185 | { | 185 | { |
186 | struct sockaddr_in remote; | 186 | struct sockaddr_in remote; |
187 | const char *err; | 187 | const char *err; |
@@ -197,14 +197,12 @@ const char *inet_tryconnect(p_sock ps, const char *address, | |||
197 | memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); | 197 | memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); |
198 | } | 198 | } |
199 | } else remote.sin_family = AF_UNSPEC; | 199 | } else remote.sin_family = AF_UNSPEC; |
200 | sock_setblocking(ps); | 200 | err = sock_connect(ps, (SA *) &remote, sizeof(remote), timeout); |
201 | err = sock_connect(ps, (SA *) &remote, sizeof(remote)); | ||
202 | if (err) { | 201 | if (err) { |
203 | sock_destroy(ps); | 202 | sock_destroy(ps); |
204 | *ps = SOCK_INVALID; | 203 | *ps = SOCK_INVALID; |
205 | return err; | 204 | return err; |
206 | } else { | 205 | } else { |
207 | sock_setnonblocking(ps); | ||
208 | return NULL; | 206 | return NULL; |
209 | } | 207 | } |
210 | } | 208 | } |