From e3ada4ed750b976833e3d54a9c1179445289bbf6 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Wed, 13 Jan 2021 01:39:14 -0500 Subject: [PATCH] implement mulberry32 for PRNG --- host.c | 12 +++++++++++- include/enet/enet.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/host.c b/host.c index 3b2180f..ed0c0eb 100644 --- a/host.c +++ b/host.c @@ -160,6 +160,16 @@ enet_host_destroy (ENetHost * host) enet_free (host); } +enet_uint32 +enet_host_random (ENetHost * host) +{ + /* Mulberry32 by Tommy Ettinger */ + enet_uint32 n = (host -> randomSeed += 0x6D2B79F5U); + n = (n ^ (n >> 15)) * (n | 1U); + n ^= n + (n ^ (n >> 7)) * (n | 61U); + return n ^ (n >> 14); +} + /** Initiates a connection to a foreign host. @param host host seeking the connection @param address destination for the connection @@ -199,7 +209,7 @@ enet_host_connect (ENetHost * host, const ENetAddress * address, size_t channelC currentPeer -> channelCount = channelCount; currentPeer -> state = ENET_PEER_STATE_CONNECTING; currentPeer -> address = * address; - currentPeer -> connectID = ++ host -> randomSeed; + currentPeer -> connectID = enet_host_random (host); if (host -> outgoingBandwidth == 0) currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; diff --git a/include/enet/enet.h b/include/enet/enet.h index fc45cbd..d422ef5 100644 --- a/include/enet/enet.h +++ b/include/enet/enet.h @@ -575,6 +575,7 @@ ENET_API void enet_host_channel_limit (ENetHost *, size_t); ENET_API void enet_host_bandwidth_limit (ENetHost *, enet_uint32, enet_uint32); extern void enet_host_bandwidth_throttle (ENetHost *); extern enet_uint32 enet_host_random_seed (void); +extern enet_uint32 enet_host_random (ENetHost *); ENET_API int enet_peer_send (ENetPeer *, enet_uint8, ENetPacket *); ENET_API ENetPacket * enet_peer_receive (ENetPeer *, enet_uint8 * channelID);