mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-12-25 12:08:21 +01:00
When zero-timeout, only try first address in connect.
This commit is contained in:
parent
be67f63f4e
commit
83880dbed7
13
doc/tcp.html
13
doc/tcp.html
@ -242,11 +242,14 @@ established.
|
||||
|
||||
<p class=note>
|
||||
Note: Starting with LuaSocket 3.0, the host name resolution
|
||||
depends on whether the socket was created by <a
|
||||
href=#socket.tcp><tt>socket.tcp</tt></a> or <a
|
||||
href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
|
||||
the appropriate family are tried in succession until the
|
||||
first success or until the last failure.
|
||||
depends on whether the socket was created by
|
||||
<a href=#socket.tcp><tt>socket.tcp</tt></a>,
|
||||
<a href=#socket.tcp4><tt>socket.tcp4</tt></a> or
|
||||
<a href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
|
||||
the appropriate family (or both) are tried in the order
|
||||
returned by the resolver until the
|
||||
first success or until the last failure. If the timeout was
|
||||
set to zero, only the first address is tried.
|
||||
</p>
|
||||
|
||||
<!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||
|
@ -423,8 +423,8 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
|
||||
/* try connecting to remote address */
|
||||
err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
|
||||
(socklen_t) iterator->ai_addrlen, tm));
|
||||
/* if success, break out of loop */
|
||||
if (err == NULL) {
|
||||
/* if success or timeout is zero, break out of loop */
|
||||
if (err == NULL || timeout_iszero(tm)) {
|
||||
*family = current_family;
|
||||
break;
|
||||
}
|
||||
|
@ -417,7 +417,7 @@ static int global_connect(lua_State *L) {
|
||||
bindhints.ai_family = family;
|
||||
bindhints.ai_flags = AI_PASSIVE;
|
||||
if (localaddr) {
|
||||
err = inet_trybind(&tcp->sock, &tcp->family, localaddr,
|
||||
err = inet_trybind(&tcp->sock, &tcp->family, localaddr,
|
||||
localserv, &bindhints);
|
||||
if (err) {
|
||||
lua_pushnil(L);
|
||||
@ -429,7 +429,7 @@ static int global_connect(lua_State *L) {
|
||||
memset(&connecthints, 0, sizeof(connecthints));
|
||||
connecthints.ai_socktype = SOCK_STREAM;
|
||||
/* make sure we try to connect only to the same family */
|
||||
connecthints.ai_family = tcp->family;
|
||||
connecthints.ai_family = tcp->family;
|
||||
err = inet_tryconnect(&tcp->sock, &tcp->family, remoteaddr, remoteserv,
|
||||
&tcp->tm, &connecthints);
|
||||
if (err) {
|
||||
|
Loading…
Reference in New Issue
Block a user