summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-09-13 21:33:11 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2013-09-13 21:33:11 -0400
commitf830b85d101653dc11a3d97cb7b8b679d8ac09ec (patch)
tree27c15204642d7b2ce50ff2bd9f5faa23a93c80d6 /Source/Core
parent0040e662823ec2b7ae97d0e8ea2fff715d30283f (diff)
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.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/NetPlayServer.cpp9
1 files changed, 8 insertions, 1 deletions
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<std::recursive_mutex> 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;
}