From 9a63cf868da4a7740c9470a06dda299b4e1720e0 Mon Sep 17 00:00:00 2001 From: Mr_Goldberg Date: Sun, 31 Jan 2021 21:50:31 -0500 Subject: [PATCH] Listen socket ids should be different from connection socket ids. --- dll/steam_networking_sockets.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dll/steam_networking_sockets.h b/dll/steam_networking_sockets.h index 3fe0d91e..82acd51d 100644 --- a/dll/steam_networking_sockets.h +++ b/dll/steam_networking_sockets.h @@ -107,11 +107,16 @@ Steam_Networking_Sockets(class Settings *settings, class Networking *network, cl this->run_every_runcb->remove(&Steam_Networking_Sockets::steam_run_every_runcb, this); } +static unsigned long get_socket_id() +{ + static unsigned long socket_id; + socket_id++; + return socket_id; +} HSteamListenSocket new_listen_socket(int nSteamConnectVirtualPort) { - static HSteamListenSocket socket_id; - ++socket_id; + HSteamListenSocket socket_id = get_socket_id(); if (socket_id == k_HSteamListenSocket_Invalid) ++socket_id; auto conn = std::find_if(listen_sockets.begin(), listen_sockets.end(), [&nSteamConnectVirtualPort](struct Listen_Socket const& conn) { return conn.virtual_port == nSteamConnectVirtualPort;}); @@ -165,8 +170,7 @@ HSteamNetConnection new_connect_socket(SteamNetworkingIdentity remote_identity, socket.user_data = -1; socket.poll_group = k_HSteamNetPollGroup_Invalid; - static HSteamNetConnection socket_id; - ++socket_id; + HSteamNetConnection socket_id = get_socket_id(); if (socket_id == k_HSteamNetConnection_Invalid) ++socket_id; if (connect_sockets.insert(std::make_pair(socket_id, socket)).second == false) {