From ef4ae1d9ca70fb201f8e604ab5e67c7456af4fe4 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 26 Jan 2025 01:21:35 +0000 Subject: [PATCH] Implement RPL_STATSCONN for compatibility with ircu. --- src/coremods/core_lusers.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/coremods/core_lusers.cpp b/src/coremods/core_lusers.cpp index 957d2a6b6..f77164d9e 100644 --- a/src/coremods/core_lusers.cpp +++ b/src/coremods/core_lusers.cpp @@ -27,6 +27,9 @@ enum { + // From ircu. + RPL_STATSCONN = 250, + // From RFC 1459. RPL_LUSERCLIENT = 251, RPL_LUSERUNKNOWN = 253, @@ -42,6 +45,7 @@ struct LusersCounters final { size_t max_local; size_t max_global; + size_t max_conns; size_t invisible = 0; size_t global_servers; size_t local_servers; @@ -56,6 +60,7 @@ struct LusersCounters final invisible++; } UpdateServerCount(); + max_conns = local_servers + max_local; } inline void UpdateMaxUsers() @@ -67,6 +72,10 @@ struct LusersCounters final current = ServerInstance->Users.GlobalUserCount(); if (current > max_global) max_global = current; + + current = local_servers + max_local; + if (current > max_conns) + max_conns = current; } inline void UpdateServerCount() @@ -124,6 +133,7 @@ CmdResult CommandLusers::Handle(User* user, const Params& parameters) user->WriteNumeric(RPL_LUSERME, INSP_FORMAT("I have {} clients and {} servers", ServerInstance->Users.LocalUserCount(), counters.local_servers)); user->WriteNumeric(RPL_LOCALUSERS, INSP_FORMAT("Current local users: {} Max: {}", ServerInstance->Users.LocalUserCount(), counters.max_local)); user->WriteNumeric(RPL_GLOBALUSERS, INSP_FORMAT("Current global users: {} Max: {}", ServerInstance->Users.GlobalUserCount(), counters.max_global)); + user->WriteNumeric(RPL_STATSCONN, INSP_FORMAT("Highest connection count: {} ({} clients) ({} connections received)", counters.max_conns, counters.max_local, ServerInstance->Stats.Accept)); return CmdResult::SUCCESS; }