From f830b85d101653dc11a3d97cb7b8b679d8ac09ec Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 13 Sep 2013 21:33:11 -0400 Subject: [PATCH] NetPlayServer: Drop all the pads for a client when she disconnects This makes intuitive sense, and prevents issues with users stealing up all the pads and requiring admin intervention to participate. --- Source/Core/Core/Src/NetPlayServer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/Src/NetPlayServer.cpp b/Source/Core/Core/Src/NetPlayServer.cpp index 715fd5048d..5abf805fe5 100644 --- a/Source/Core/Core/Src/NetPlayServer.cpp +++ b/Source/Core/Core/Src/NetPlayServer.cpp @@ -238,9 +238,11 @@ unsigned int NetPlayServer::OnDisconnect(sf::SocketTCP& socket) SendToClients(spac); } + int pid = m_players[socket].pid; + sf::Packet spac; spac << (MessageId)NP_MSG_PLAYER_LEAVE; - spac << m_players[socket].pid; + spac << pid; m_selector.Remove(socket); @@ -251,6 +253,11 @@ unsigned int NetPlayServer::OnDisconnect(sf::SocketTCP& socket) std::lock_guard lks(m_crit.send); SendToClients(spac); + for (int i = 0; i < 4; i++) + if (m_pad_map[i] == pid) + m_pad_map[i] = -1; + UpdatePadMapping(); + return 0; }