diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-01-17 08:02:04 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-01-17 08:02:04 +0000 |
| commit | 02ef4e7daae6bef629dcb568052755fb85ed2efc (patch) | |
| tree | 3001b5d4429626e086b457ade7a899428fbfeb34 /src/inet.c | |
| parent | 076451c75336b30e6152bd5c02f355db39107f7d (diff) | |
| download | luasocket-02ef4e7daae6bef629dcb568052755fb85ed2efc.tar.gz luasocket-02ef4e7daae6bef629dcb568052755fb85ed2efc.tar.bz2 luasocket-02ef4e7daae6bef629dcb568052755fb85ed2efc.zip | |
Trying to get rid of EINTR problems...
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 | } |
