mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-04 07:31:16 +00:00 
			
		
		
		
	Before rebasing on the newly released enet 1.3.14, let's resync with the actual
commit we initially imported, which seems to be:
f46fee0acc
		
	
			
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff --git a/thirdparty/enet/enet/enet.h b/thirdparty/enet/enet/enet.h
 | 
						|
index 650b199ee5..246cbb0a62 100644
 | 
						|
--- a/thirdparty/enet/enet/enet.h
 | 
						|
+++ b/thirdparty/enet/enet/enet.h
 | 
						|
@@ -10,13 +10,10 @@ extern "C"
 | 
						|
 {
 | 
						|
 #endif
 | 
						|
 
 | 
						|
+#include <stdint.h>
 | 
						|
 #include <stdlib.h>
 | 
						|
 
 | 
						|
-#ifdef _WIN32
 | 
						|
-#include "enet/win32.h"
 | 
						|
-#else
 | 
						|
-#include "enet/unix.h"
 | 
						|
-#endif
 | 
						|
+#include "enet/godot.h"
 | 
						|
 
 | 
						|
 #include "enet/types.h"
 | 
						|
 #include "enet/protocol.h"
 | 
						|
@@ -72,7 +69,6 @@ typedef enum _ENetSocketShutdown
 | 
						|
     ENET_SOCKET_SHUTDOWN_READ_WRITE = 2
 | 
						|
 } ENetSocketShutdown;
 | 
						|
 
 | 
						|
-#define ENET_HOST_ANY       0
 | 
						|
 #define ENET_HOST_BROADCAST 0xFFFFFFFFU
 | 
						|
 #define ENET_PORT_ANY       0
 | 
						|
 
 | 
						|
@@ -88,9 +84,11 @@ typedef enum _ENetSocketShutdown
 | 
						|
  */
 | 
						|
 typedef struct _ENetAddress
 | 
						|
 {
 | 
						|
-   enet_uint32 host;
 | 
						|
+   uint8_t host[16];
 | 
						|
    enet_uint16 port;
 | 
						|
+   uint8_t wildcard;
 | 
						|
 } ENetAddress;
 | 
						|
+#define enet_host_equal(host_a, host_b) (memcmp(&host_a, &host_b,16) == 0)
 | 
						|
 
 | 
						|
 /**
 | 
						|
  * Packet flag bit constants.
 | 
						|
@@ -519,6 +517,16 @@ ENET_API int        enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSock
 | 
						|
 */
 | 
						|
 ENET_API int enet_address_set_host (ENetAddress * address, const char * hostName);
 | 
						|
 
 | 
						|
+/** Sets the host field in the address parameter from ip struct.
 | 
						|
+    @param address destination to store resolved address
 | 
						|
+    @param ip the ip struct to read from
 | 
						|
+    @param size the size of the ip struct.
 | 
						|
+    @retval 0 on success
 | 
						|
+    @retval != 0 on failure
 | 
						|
+    @returns the address of the given ip in address on success.
 | 
						|
+*/
 | 
						|
+ENET_API void enet_address_set_ip(ENetAddress * address, const uint8_t * ip, size_t size);
 | 
						|
+
 | 
						|
 /** Gives the printable form of the IP address specified in the address parameter.
 | 
						|
     @param address    address printed
 | 
						|
     @param hostName   destination for name, must not be NULL
 | 
						|
diff --git a/thirdparty/enet/host.c b/thirdparty/enet/host.c
 | 
						|
index 3be6c0922c..fc4da4ca67 100644
 | 
						|
--- a/thirdparty/enet/host.c
 | 
						|
+++ b/thirdparty/enet/host.c
 | 
						|
@@ -87,7 +87,7 @@ enet_host_create (const ENetAddress * address, size_t peerCount, size_t channelL
 | 
						|
     host -> commandCount = 0;
 | 
						|
     host -> bufferCount = 0;
 | 
						|
     host -> checksum = NULL;
 | 
						|
-    host -> receivedAddress.host = ENET_HOST_ANY;
 | 
						|
+    memset(host -> receivedAddress.host, 0, 16);
 | 
						|
     host -> receivedAddress.port = 0;
 | 
						|
     host -> receivedData = NULL;
 | 
						|
     host -> receivedDataLength = 0;
 | 
						|
diff --git a/thirdparty/enet/protocol.c b/thirdparty/enet/protocol.c
 | 
						|
index 29d648732d..ab26886de4 100644
 | 
						|
--- a/thirdparty/enet/protocol.c
 | 
						|
+++ b/thirdparty/enet/protocol.c
 | 
						|
@@ -298,7 +298,7 @@ enet_protocol_handle_connect (ENetHost * host, ENetProtocolHeader * header, ENet
 | 
						|
         }
 | 
						|
         else 
 | 
						|
         if (currentPeer -> state != ENET_PEER_STATE_CONNECTING &&
 | 
						|
-            currentPeer -> address.host == host -> receivedAddress.host)
 | 
						|
+            enet_host_equal(currentPeer -> address.host, host -> receivedAddress.host))
 | 
						|
         {
 | 
						|
             if (currentPeer -> address.port == host -> receivedAddress.port &&
 | 
						|
                 currentPeer -> connectID == command -> connect.connectID)
 | 
						|
@@ -1010,9 +1010,8 @@ enet_protocol_handle_incoming_commands (ENetHost * host, ENetEvent * event)
 | 
						|
 
 | 
						|
        if (peer -> state == ENET_PEER_STATE_DISCONNECTED ||
 | 
						|
            peer -> state == ENET_PEER_STATE_ZOMBIE ||
 | 
						|
-           ((host -> receivedAddress.host != peer -> address.host ||
 | 
						|
-             host -> receivedAddress.port != peer -> address.port) &&
 | 
						|
-             peer -> address.host != ENET_HOST_BROADCAST) ||
 | 
						|
+           (!enet_host_equal(host -> receivedAddress.host, peer -> address.host) ||
 | 
						|
+             host -> receivedAddress.port != peer -> address.port) ||
 | 
						|
            (peer -> outgoingPeerID < ENET_PROTOCOL_MAXIMUM_PEER_ID &&
 | 
						|
             sessionID != peer -> incomingSessionID))
 | 
						|
          return 0;
 | 
						|
@@ -1054,7 +1053,7 @@ enet_protocol_handle_incoming_commands (ENetHost * host, ENetEvent * event)
 | 
						|
        
 | 
						|
     if (peer != NULL)
 | 
						|
     {
 | 
						|
-       peer -> address.host = host -> receivedAddress.host;
 | 
						|
+       enet_address_set_ip(&(peer -> address), host -> receivedAddress.host, 16);
 | 
						|
        peer -> address.port = host -> receivedAddress.port;
 | 
						|
        peer -> incomingDataTotal += host -> receivedDataLength;
 | 
						|
     }
 |