MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / MultiDisconnectDeadPlayers

Function MultiDisconnectDeadPlayers

Descent3/multi_server.cpp:1047–1079  ·  view source on GitHub ↗

Disconnects all players that haven't been heard from in a while Server only

Source from the content-addressed store, hash-verified

1045// Disconnects all players that haven't been heard from in a while
1046// Server only
1047void MultiDisconnectDeadPlayers() {
1048 for (int i = 0; i < MAX_NET_PLAYERS; i++) {
1049 if (i == Player_num)
1050 continue;
1051
1052 if (NetPlayers[i].flags & NPF_CONNECTED) {
1053 float cur_time = timer_GetTime();
1054
1055 if (!nw_CheckReliableSocket(NetPlayers[i].reliable_socket)) {
1056 mprintf(0, "Disconnecting player %d because the reliable socket closed.\n", i);
1057 AddHUDMessage("%s (%s)", TXT_RELIABLE_OVERRUN, Players[i].callsign);
1058 MultiDisconnectPlayer(i);
1059 } else if (NetPlayers[i].sequence > NETSEQ_LEVEL_START && NetPlayers[i].sequence != NETSEQ_LEVEL_END) {
1060 if (cur_time - NetPlayers[i].last_packet_time > DISCONNECT_TIME) {
1061 mprintf(0, "8sec disconnecting player %d. Last packet time=%f Sequence=%d\n",
1062 i,
1063 cur_time - NetPlayers[i].last_packet_time,
1064 NetPlayers[i].sequence);
1065 MultiDisconnectPlayer(i);
1066 }
1067 } else // If not playing (ie joining, give them longer)
1068 {
1069 if (cur_time - NetPlayers[i].last_packet_time > (DISCONNECT_TIME * 15)) {
1070 mprintf(0, "Too long...disconnecting player %d. Last packet time=%f Sequence=%d\n",
1071 i,
1072 cur_time - NetPlayers[i].last_packet_time,
1073 NetPlayers[i].sequence);
1074 MultiDisconnectPlayer(i);
1075 }
1076 }
1077 }
1078 }
1079}
1080
1081// Disconnect a player for whatever reason
1082// Server only

Callers 1

MultiDoServerFrameFunction · 0.85

Calls 3

nw_CheckReliableSocketFunction · 0.85
AddHUDMessageFunction · 0.85
MultiDisconnectPlayerFunction · 0.85

Tested by

no test coverage detected