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