From e0ef8fc03f1fafc801ca5d857347f9fa1ea58881 Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 14 Mar 2015 15:19:18 +0100 Subject: NetPlay: Make the enet interrupts work Otherwise, it would work but any async sending would be delayed by 4ms or wait until the next packet was received. Also increase the client timeout to 250ms, since enet_host_service is now really interrupted. --- Source/Core/Common/TraversalClient.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 72d18244f3..02fe5ee26e 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -301,7 +301,8 @@ void TraversalClient::Reset() int ENET_CALLBACK TraversalClient::InterceptCallback(ENetHost* host, ENetEvent* event) { auto traversalClient = g_TraversalClient.get(); - if (traversalClient->TestPacket(host->receivedData, host->receivedDataLength, &host->receivedAddress)) + if (traversalClient->TestPacket(host->receivedData, host->receivedDataLength, &host->receivedAddress) + || (host->receivedDataLength == 1 && host->receivedData[0] == 0)) { event->type = (ENetEventType)42; return 1; -- cgit v1.2.3 From 8201a52cec975c6ed9c81bd6f33c41b3ef7b473a Mon Sep 17 00:00:00 2001 From: mathieui Date: Tue, 10 Mar 2015 01:47:29 +0100 Subject: Traversal: Use a decent PRNG instead of rand() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit we don’t need cryptosecure random, but having a uniform distribution is always better. --- Source/Core/Common/TraversalClient.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 02fe5ee26e..f17ce0d921 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -7,9 +7,10 @@ static void GetRandomishBytes(u8* buf, size_t size) { // We don't need high quality random numbers (which might not be available), // just non-repeating numbers! - srand(enet_time_get()); + static std::mt19937 prng(enet_time_get()); + static std::uniform_int_distribution u8_distribution(0, 255); for (size_t i = 0; i < size; i++) - buf[i] = rand() & 0xff; + buf[i] = u8_distribution(prng); } TraversalClient::TraversalClient(ENetHost* netHost, const std::string& server, const u16 port) -- cgit v1.2.3