Przeglądaj źródła

Possible fix to issue #1951

(Code formated to be submitted for pull request) -- Indentation was off.
SAME FIX AS BEFORE

When two instances of Torque3D are running on the same network, one as a
hosted server and the other as a client, the client is unable to connect
to the server. The program now can open a socket. This was obviously a
typo. To find the error I just searched for keywords containing socket,
open, open socket, and opensocket till I found the correct file. The
other error was in how the program processed “non fatal” errors. I just
outputed the error to the main console and devised that the socket
should not be closed for a WSAEWOULDBLOCK error 10035 "It is normal for
WSAEWOULDBLOCK to be reported as the result from calling connect on a
nonblocking SOCK_STREAM socket, since some time must elapse for the
connection to be established."

Read about the WouldBlock error:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx

Use of dbgSetParameters ( port , password ):

http://docs.garagegames.com/tge/official/content/documentation/Reference/Console%20Functions/TorqueScript_Console_Functions_2.html#dbgSetParameters_.28_port_.2C_password_.29
Chris Millsap 8 lat temu
rodzic
commit
c0906e1c41
1 zmienionych plików z 10 dodań i 5 usunięć
  1. 10 5
      Engine/source/platform/platformNet.cpp

+ 10 - 5
Engine/source/platform/platformNet.cpp

@@ -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) // Open socket
    {
    {
       handleFd = openSocket();
       handleFd = openSocket();
    }
    }
@@ -826,10 +826,15 @@ NetSocket Net::openConnectTo(const char *addressString)
          if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1 &&
          if (::connect(socketFd, (struct sockaddr *)&ipAddr, sizeof(ipAddr)) == -1 &&
             errno != EINPROGRESS)
             errno != EINPROGRESS)
          {
          {
-            Con::errorf("Error connecting %s: %s",
-               addressString, strerror(errno));
-            closeSocket(handleFd);
-            handleFd = NetSocket::INVALID;
+            error = PlatformNetState::getLastError(); // Output this error if not 10035 then close
+
+            if (error != Net::WouldBlock) // Resource temporarily unavailable.
+            {
+              Con::errorf("Error connecting %s: %s",
+                 addressString, strerror(errno));
+              closeSocket(handleFd);
+              handleFd = NetSocket::INVALID;
+            }
          }
          }
       }
       }
       else
       else