diff options
| author | Diego Nehab <diego.nehab@gmail.com> | 2015-12-03 12:56:18 -0200 |
|---|---|---|
| committer | Diego Nehab <diego.nehab@gmail.com> | 2015-12-03 12:56:18 -0200 |
| commit | 83880dbed77f9a0a3627bce2e7bfbe1b862e091d (patch) | |
| tree | b5c9dcf94fe311c27a42096c04907fcd17265404 /src | |
| parent | be67f63f4e11e53690bf1431a236f86b484c9bf0 (diff) | |
| download | luasocket-83880dbed77f9a0a3627bce2e7bfbe1b862e091d.tar.gz luasocket-83880dbed77f9a0a3627bce2e7bfbe1b862e091d.tar.bz2 luasocket-83880dbed77f9a0a3627bce2e7bfbe1b862e091d.zip | |
When zero-timeout, only try first address in connect.
Diffstat (limited to 'src')
| -rw-r--r-- | src/inet.c | 4 | ||||
| -rw-r--r-- | src/tcp.c | 4 |
2 files changed, 4 insertions, 4 deletions
| @@ -423,8 +423,8 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address, | |||
| 423 | /* try connecting to remote address */ | 423 | /* try connecting to remote address */ |
| 424 | err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr, | 424 | err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr, |
| 425 | (socklen_t) iterator->ai_addrlen, tm)); | 425 | (socklen_t) iterator->ai_addrlen, tm)); |
| 426 | /* if success, break out of loop */ | 426 | /* if success or timeout is zero, break out of loop */ |
| 427 | if (err == NULL) { | 427 | if (err == NULL || timeout_iszero(tm)) { |
| 428 | *family = current_family; | 428 | *family = current_family; |
| 429 | break; | 429 | break; |
| 430 | } | 430 | } |
| @@ -417,7 +417,7 @@ static int global_connect(lua_State *L) { | |||
| 417 | bindhints.ai_family = family; | 417 | bindhints.ai_family = family; |
| 418 | bindhints.ai_flags = AI_PASSIVE; | 418 | bindhints.ai_flags = AI_PASSIVE; |
| 419 | if (localaddr) { | 419 | if (localaddr) { |
| 420 | err = inet_trybind(&tcp->sock, &tcp->family, localaddr, | 420 | err = inet_trybind(&tcp->sock, &tcp->family, localaddr, |
| 421 | localserv, &bindhints); | 421 | localserv, &bindhints); |
| 422 | if (err) { | 422 | if (err) { |
| 423 | lua_pushnil(L); | 423 | lua_pushnil(L); |
| @@ -429,7 +429,7 @@ static int global_connect(lua_State *L) { | |||
| 429 | memset(&connecthints, 0, sizeof(connecthints)); | 429 | memset(&connecthints, 0, sizeof(connecthints)); |
| 430 | connecthints.ai_socktype = SOCK_STREAM; | 430 | connecthints.ai_socktype = SOCK_STREAM; |
| 431 | /* make sure we try to connect only to the same family */ | 431 | /* make sure we try to connect only to the same family */ |
| 432 | connecthints.ai_family = tcp->family; | 432 | connecthints.ai_family = tcp->family; |
| 433 | err = inet_tryconnect(&tcp->sock, &tcp->family, remoteaddr, remoteserv, | 433 | err = inet_tryconnect(&tcp->sock, &tcp->family, remoteaddr, remoteserv, |
| 434 | &tcp->tm, &connecthints); | 434 | &tcp->tm, &connecthints); |
| 435 | if (err) { | 435 | if (err) { |
