enet: Resync with upstream we forked at, add patch
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
This commit is contained in:
parent
61dd7748ca
commit
571c713a5e
8
thirdparty/README.md
vendored
8
thirdparty/README.md
vendored
@ -46,7 +46,7 @@ Files extracted from upstream source:
|
|||||||
## enet
|
## enet
|
||||||
|
|
||||||
- Upstream: http://enet.bespin.org
|
- Upstream: http://enet.bespin.org
|
||||||
- Version: 1.3.13
|
- Version: 1.3.13 (f46fee0, 2016)
|
||||||
- License: MIT
|
- License: MIT
|
||||||
|
|
||||||
Files extracted from upstream source:
|
Files extracted from upstream source:
|
||||||
@ -57,12 +57,14 @@ Files extracted from upstream source:
|
|||||||
|
|
||||||
Important: enet.h, host.c, protocol.c have been slightly modified
|
Important: enet.h, host.c, protocol.c have been slightly modified
|
||||||
to be usable by godot socket implementation and allow IPv6.
|
to be usable by godot socket implementation and allow IPv6.
|
||||||
|
Apply the patch in the `patches/` folder when syncing on newer upstream
|
||||||
|
commits.
|
||||||
|
|
||||||
Two files (godot.cpp and enet/godot.h) have been added to provide
|
Two files (godot.cpp and enet/godot.h) have been added to provide
|
||||||
enet socket implementation using Godot classes.
|
enet socket implementation using Godot classes.
|
||||||
|
|
||||||
It is still possible to build against a system wide ENet but doing so
|
It is still possible to build against a system wide ENet but doing so
|
||||||
will limit it's functionality to IPv4 only.
|
will limit it's functionality to IPv4 only.
|
||||||
Check the diff of enet.h, protocol.c, and host.c with the 1.3.13
|
|
||||||
tarball before the next update.
|
|
||||||
|
|
||||||
|
|
||||||
## etc2comp
|
## etc2comp
|
||||||
|
105
thirdparty/enet/patches/ipv6_support.patch
vendored
Normal file
105
thirdparty/enet/patches/ipv6_support.patch
vendored
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
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;
|
||||||
|
}
|
1
thirdparty/enet/protocol.c
vendored
1
thirdparty/enet/protocol.c
vendored
@ -9,7 +9,6 @@
|
|||||||
#include "enet/time.h"
|
#include "enet/time.h"
|
||||||
#include "enet/enet.h"
|
#include "enet/enet.h"
|
||||||
|
|
||||||
|
|
||||||
static size_t commandSizes [ENET_PROTOCOL_COMMAND_COUNT] =
|
static size_t commandSizes [ENET_PROTOCOL_COMMAND_COUNT] =
|
||||||
{
|
{
|
||||||
0,
|
0,
|
||||||
|
Loading…
Reference in New Issue
Block a user