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[] = {
|
static const char* const stat_str[] = {
|
||||||
"inactive",
|
"inactive",
|
||||||
|
"authorizing",
|
||||||
"authorized",
|
"authorized",
|
||||||
"waiting",
|
"waiting",
|
||||||
"loading map",
|
"loading map",
|
||||||
|
@ -73,6 +73,7 @@ typedef struct CommandPacket {
|
|||||||
/** Status of a client */
|
/** Status of a client */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
STATUS_INACTIVE, ///< The client is not connected nor active
|
STATUS_INACTIVE, ///< The client is not connected nor active
|
||||||
|
STATUS_AUTHORIZING,///< The client is authorizing
|
||||||
STATUS_AUTH, ///< The client is authorized
|
STATUS_AUTH, ///< The client is authorized
|
||||||
STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map
|
STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map
|
||||||
STATUS_MAP, ///< The client 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
|
// 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);
|
Packet *p = NetworkSend_Init(PACKET_SERVER_NEED_PASSWORD);
|
||||||
p->Send_uint8(type);
|
p->Send_uint8(type);
|
||||||
cs->Send_Packet(p);
|
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);
|
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);
|
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) {
|
if (cs->status >= STATUS_PRE_ACTIVE) {
|
||||||
|
Loading…
Reference in New Issue
Block a user