mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 16:14:38 +00:00
Proposed fix for Issue #1951. Checked with IP4. IP6 should work as wel but not checked yet.
This commit is contained in:
parent
8684cd1a65
commit
49130dbd71
1 changed files with 22 additions and 13 deletions
|
|
@ -809,7 +809,7 @@ NetSocket Net::openConnectTo(const char *addressString)
|
||||||
error = Net::WrongProtocolType;
|
error = Net::WrongProtocolType;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error != NoError || error == NeedHostLookup)
|
if (error == NoError || error == NeedHostLookup)
|
||||||
{
|
{
|
||||||
handleFd = openSocket();
|
handleFd = openSocket();
|
||||||
}
|
}
|
||||||
|
|
@ -823,13 +823,16 @@ NetSocket Net::openConnectTo(const char *addressString)
|
||||||
if (socketFd != InvalidSocketHandle)
|
if (socketFd != InvalidSocketHandle)
|
||||||
{
|
{
|
||||||
setBlocking(handleFd, false);
|
setBlocking(handleFd, false);
|
||||||
if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1 &&
|
if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1)
|
||||||
errno != EINPROGRESS)
|
|
||||||
{
|
{
|
||||||
Con::errorf("Error connecting %s: %s",
|
Net::Error err = PlatformNetState::getLastError();
|
||||||
addressString, strerror(errno));
|
if (err != Net::WouldBlock)
|
||||||
closeSocket(handleFd);
|
{
|
||||||
handleFd = NetSocket::INVALID;
|
Con::errorf("Error connecting to %s: %u",
|
||||||
|
addressString, err);
|
||||||
|
closeSocket(handleFd);
|
||||||
|
handleFd = NetSocket::INVALID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -849,14 +852,20 @@ NetSocket Net::openConnectTo(const char *addressString)
|
||||||
sockaddr_in6 ipAddr6;
|
sockaddr_in6 ipAddr6;
|
||||||
NetAddressToIPSocket6(&address, &ipAddr6);
|
NetAddressToIPSocket6(&address, &ipAddr6);
|
||||||
SOCKET socketFd = PlatformNetState::smReservedSocketList.activate(handleFd, AF_INET6, false, true);
|
SOCKET socketFd = PlatformNetState::smReservedSocketList.activate(handleFd, AF_INET6, false, true);
|
||||||
if (::connect(socketFd, (struct sockaddr *)&ipAddr6, sizeof(ipAddr6)) == -1 &&
|
if (socketFd != InvalidSocketHandle)
|
||||||
errno != EINPROGRESS)
|
|
||||||
{
|
{
|
||||||
setBlocking(handleFd, false);
|
setBlocking(handleFd, false);
|
||||||
Con::errorf("Error connecting %s: %s",
|
if (::connect(socketFd, (struct sockaddr *)&ipAddr6, sizeof(ipAddr6)) == -1)
|
||||||
addressString, strerror(errno));
|
{
|
||||||
closeSocket(handleFd);
|
Net::Error err = PlatformNetState::getLastError();
|
||||||
handleFd = NetSocket::INVALID;
|
if (err != Net::WouldBlock)
|
||||||
|
{
|
||||||
|
Con::errorf("Error connecting to %s: %u",
|
||||||
|
addressString, err);
|
||||||
|
closeSocket(handleFd);
|
||||||
|
handleFd = NetSocket::INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue