From 4862897a5b53f0bfc4cf40fb1ef34de04afd9bfa Mon Sep 17 00:00:00 2001 From: Tim Cooper Date: Mon, 16 Nov 2015 10:25:58 -0400 Subject: [PATCH] Add maximum number of server users to control channel protocol --- src/Mumble.proto | 2 ++ src/mumble/Global.cpp | 1 + src/mumble/Global.h | 1 + src/mumble/MainWindow.cpp | 4 ++++ src/mumble/Messages.cpp | 2 ++ src/murmur/Messages.cpp | 1 + src/murmur/Server.cpp | 4 ++++ 7 files changed, 15 insertions(+) diff --git a/src/Mumble.proto b/src/Mumble.proto index 92b873775..d0b3269a5 100644 --- a/src/Mumble.proto +++ b/src/Mumble.proto @@ -529,6 +529,8 @@ message ServerConfig { optional uint32 message_length = 4; // Maximum image message length. optional uint32 image_message_length = 5; + // The maximum number of users allowed on the server. + optional uint32 max_users = 6; } // Sent by the server to inform the clients of suggested client configuration diff --git a/src/mumble/Global.cpp b/src/mumble/Global.cpp index fc3568032..4bf9dc882 100644 --- a/src/mumble/Global.cpp +++ b/src/mumble/Global.cpp @@ -97,6 +97,7 @@ Global::Global() { bAllowHTML = true; uiMessageLength = 5000; uiImageLength = 131072; + uiMaxUsers = 0; qs = NULL; diff --git a/src/mumble/Global.h b/src/mumble/Global.h index 25013f8ee..2bf176b8a 100644 --- a/src/mumble/Global.h +++ b/src/mumble/Global.h @@ -103,6 +103,7 @@ public: bool bAllowHTML; unsigned int uiMessageLength; unsigned int uiImageLength; + unsigned int uiMaxUsers; bool bQuit; bool bHappyEaster; diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp index 35f4edc70..ace24c878 100644 --- a/src/mumble/MainWindow.cpp +++ b/src/mumble/MainWindow.cpp @@ -1229,6 +1229,9 @@ void MainWindow::on_qaServerInformation_triggered() { QString::fromLatin1("%1").arg(sqrt(boost::accumulators::variance(g.sh->accTCP)),0,'f',2), Qt::escape(host), QString::number(port)); + if (g.uiMaxUsers) { + qsControl += tr("

Connected users: %1/%2

").arg(ModelItem::c_qhUsers.count()).arg(g.uiMaxUsers); + } QString qsVoice, qsCrypt, qsAudio; @@ -2649,6 +2652,7 @@ void MainWindow::serverConnected() { g.bAllowHTML = true; g.uiMessageLength = 5000; g.uiImageLength = 131072; + g.uiMaxUsers = 0; if (g.s.bMute || g.s.bDeaf) { g.sh->setSelfMuteDeafState(g.s.bMute, g.s.bDeaf); diff --git a/src/mumble/Messages.cpp b/src/mumble/Messages.cpp index 40199ee24..0756d1237 100644 --- a/src/mumble/Messages.cpp +++ b/src/mumble/Messages.cpp @@ -190,6 +190,8 @@ void MainWindow::msgServerConfig(const MumbleProto::ServerConfig &msg) { g.uiMessageLength = msg.message_length(); if (msg.has_image_message_length()) g.uiImageLength = msg.image_message_length(); + if (msg.has_max_users()) + g.uiMaxUsers = msg.max_users(); } void MainWindow::msgPermissionDenied(const MumbleProto::PermissionDenied &msg) { diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp index 7e7204a47..809a71f5e 100644 --- a/src/murmur/Messages.cpp +++ b/src/murmur/Messages.cpp @@ -396,6 +396,7 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg mpsc.set_allow_html(bAllowHTML); mpsc.set_message_length(iMaxTextMessageLength); mpsc.set_image_message_length(iMaxImageMessageLength); + mpsc.set_max_users(iMaxUsers); sendMessage(uSource, mpsc); MumbleProto::SuggestConfig mpsug; diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp index 1590b8e53..6de77249a 100644 --- a/src/murmur/Server.cpp +++ b/src/murmur/Server.cpp @@ -486,6 +486,10 @@ void Server::setLiveConf(const QString &key, const QString &value) { for (int id = 1; id < iMaxUsers * 2; ++id) if (!qhUsers.contains(id)) qqIds.enqueue(id); + + MumbleProto::ServerConfig mpsc; + mpsc.set_max_users(iMaxUsers); + sendAll(mpsc); } else if (key == "usersperchannel") iMaxUsersPerChannel = i ? i : Meta::mp.iMaxUsersPerChannel; else if (key == "textmessagelength") {