summaryrefslogtreecommitdiff
path: root/media-sound/murmur/files
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2017-10-03 06:05:55 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2017-10-03 06:05:55 +0300
commitf5bc822e9ebb51b55b1c70412e311caf75549144 (patch)
tree5ebddc9044059b3989edede0a29b1c5dee5b746c /media-sound/murmur/files
parent442e1848beb74698381355d65fb01de8b97ea694 (diff)
murmur: force clients to use at least 1.3.0 version
Diffstat (limited to 'media-sound/murmur/files')
-rw-r--r--media-sound/murmur/files/strict_version.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/media-sound/murmur/files/strict_version.patch b/media-sound/murmur/files/strict_version.patch
new file mode 100644
index 0000000..544e9fd
--- /dev/null
+++ b/media-sound/murmur/files/strict_version.patch
@@ -0,0 +1,38 @@
+diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp
+index f8472fa3..97d4de2a 100644
+--- a/src/murmur/Messages.cpp
++++ b/src/murmur/Messages.cpp
+@@ -1492,8 +1492,14 @@ void Server::msgContextAction(ServerUser *uSource, MumbleProto::ContextAction &m
+ }
+
+ void Server::msgVersion(ServerUser *uSource, MumbleProto::Version &msg) {
++ bool ok = true;
+ if (msg.has_version())
+ uSource->uiVersion=msg.version();
++ else
++ ok = false;
++ if(ok)
++ if(msg.version() < 0x010300)
++ ok = false;
+ if (msg.has_release())
+ uSource->qsRelease = u8(msg.release());
+ if (msg.has_os()) {
+@@ -1501,6 +1507,18 @@ void Server::msgVersion(ServerUser *uSource, MumbleProto::Version &msg) {
+ if (msg.has_os_version())
+ uSource->qsOSVersion = u8(msg.os_version());
+ }
++ if (! ok) {
++ QString reason = "worng version";
++ log(uSource, QString("Rejected connection from %1: %2")
++ .arg(addressToString(uSource->peerAddress(), uSource->peerPort()), reason));
++ MumbleProto::Reject mpr;
++ mpr.set_reason(u8(reason));
++ mpr.set_type(MumbleProto::Reject::RejectType::Reject_RejectType_WrongVersion);
++ sendMessage(uSource, mpr);
++ uSource->disconnectSocket();
++ return;
++ }
++
+
+ log(uSource, QString("Client version %1 (%2: %3)").arg(MumbleVersion::toString(uSource->uiVersion)).arg(uSource->qsOS).arg(uSource->qsRelease));
+ }