mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
(svn r9038) -Fix [FS#115]: inactive connections are not automatically kicked, i.e. people who only open a telnet (or similar) connection to a server.
This commit is contained in:
parent
6b329f2728
commit
4b75a29766
@ -544,6 +544,7 @@ DEF_CONSOLE_CMD(ConStatus)
|
||||
{
|
||||
static const char* const stat_str[] = {
|
||||
"inactive",
|
||||
"authorizing",
|
||||
"authorized",
|
||||
"waiting",
|
||||
"loading map",
|
||||
|
@ -73,6 +73,7 @@ typedef struct CommandPacket {
|
||||
/** Status of a client */
|
||||
typedef enum {
|
||||
STATUS_INACTIVE, ///< The client is not connected nor active
|
||||
STATUS_AUTHORIZING,///< The client is authorizing
|
||||
STATUS_AUTH, ///< The client is authorized
|
||||
STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map
|
||||
STATUS_MAP, ///< The client is downloading the map
|
||||
|
@ -214,6 +214,11 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_PASSWORD)(NetworkTCPSocketHandl
|
||||
// uint8: Type of password
|
||||
//
|
||||
|
||||
/* Invalid packet when status is AUTH or higher */
|
||||
if (cs->status >= STATUS_AUTH) return;
|
||||
|
||||
cs->status = STATUS_AUTHORIZING;
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_NEED_PASSWORD);
|
||||
p->Send_uint8(type);
|
||||
cs->Send_Packet(p);
|
||||
@ -1533,6 +1538,12 @@ void NetworkServer_Tick(bool send_frame)
|
||||
IConsolePrintF(_icolour_err,"Client #%d is dropped because it took longer than %d ticks for him to join", cs->index, _network_max_join_time);
|
||||
NetworkCloseClient(cs);
|
||||
}
|
||||
} else if (cs->status == STATUS_INACTIVE) {
|
||||
int lag = NetworkCalculateLag(cs);
|
||||
if (lag > 4 * DAY_TICKS) {
|
||||
IConsolePrintF(_icolour_err,"Client #%d is dropped because it took longer than %d ticks to start the joining process", cs->index, 4 * DAY_TICKS);
|
||||
NetworkCloseClient(cs);
|
||||
}
|
||||
}
|
||||
|
||||
if (cs->status >= STATUS_PRE_ACTIVE) {
|
||||
|
Loading…
Reference in New Issue
Block a user