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 | } |
