git: 6a4027812c8b - 2026Q1 - audio/mumble-server: Fix "Failed to set TOS for UDP Socket" for IPv6

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Thu, 26 Feb 2026 18:48:22 UTC
The branch 2026Q1 has been updated by vvd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6a4027812c8bf3d4e4d7fbfb0105bfc94b7392bd

commit 6a4027812c8bf3d4e4d7fbfb0105bfc94b7392bd
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2026-02-26 18:31:32 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2026-02-26 18:48:15 +0000

    audio/mumble-server: Fix "Failed to set TOS for UDP Socket" for IPv6
    
    <W>2025-12-29 23:37:57.715 1 => Server listening on [::]:64738
    <W>2025-12-29 23:37:57.721 1 => Server: Failed to set TOS for UDP Socket
    
    This prevents proper QoS from being set for IPv6.
    
    Upstream issue: https://github.com/mumble-voip/mumble/issues/7088
    
    While here pet portclippy.
    
    PR:     292034
    MFH:    2026Q1
    (cherry picked from commit 70bbcdc61d5678a4a5e9ef232ed6f2d4a3496c82)
---
 audio/mumble-server/Makefile                          | 16 +++++++---------
 audio/mumble-server/files/patch-src_murmur_Server.cpp | 18 ++++++++++++++++++
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/audio/mumble-server/Makefile b/audio/mumble-server/Makefile
index 24b8a35d2638..64d553b22231 100644
--- a/audio/mumble-server/Makefile
+++ b/audio/mumble-server/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	mumble
 DISTVERSION=	1.5.857
+PORTREVISION=	1
 CATEGORIES=	audio net
 MASTER_SITES=	https://github.com/${PORTNAME}-voip/${PORTNAME}/releases/download/v${DISTVERSION}/
 PKGNAMESUFFIX=	-server
@@ -53,23 +54,20 @@ MYSQL_USE=		QT=sql-mysql:run
 PGSQL_USE=		QT=sql-pgsql:run
 SQLITE_USE=		QT=sql-sqlite3:run
 
-.include <bsd.port.pre.mk>
+do-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${MV} ${WRKSRC}/docs/additional-readmes/README.static.linux ${WRKSRC}
+	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
 
 post-install:
 	${REINPLACE_CMD} -e '\
 			s|database=.*|database=/var/db/mumble-server/mumble-server.sqlite| ; \
 			s|;pidfile=.*|pidfile=/var/run/mumble-server/mumble-server.pid| ; \
-			s|;logfile=.*|logfile=/var/log/mumble-server/mumble-server.log| ; \
-			s|;host=.*|host=0.0.0.0|' \
+			s|;logfile=.*|logfile=/var/log/mumble-server/mumble-server.log|' \
 		${STAGEDIR}${ETCDIR}/mumble-server.ini
 	${MV}   ${STAGEDIR}${ETCDIR}/mumble-server.ini \
 		${STAGEDIR}${ETCDIR}/mumble-server.ini.sample
 	${RM}   ${STAGEDIR}${PREFIX}/bin/mumble-server-user-wrapper \
 		${STAGEDIR}${PREFIX}/share/man/man1/mumble-server-user-wrapper.1
 
-do-install-DOCS-on:
-	${MKDIR} ${STAGEDIR}${DOCSDIR}
-	${MV} ${WRKSRC}/docs/additional-readmes/README.static.linux ${WRKSRC}
-	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/audio/mumble-server/files/patch-src_murmur_Server.cpp b/audio/mumble-server/files/patch-src_murmur_Server.cpp
new file mode 100644
index 000000000000..dafcfcf704cd
--- /dev/null
+++ b/audio/mumble-server/files/patch-src_murmur_Server.cpp
@@ -0,0 +1,18 @@
+--- src/murmur/Server.cpp.orig	2025-10-11 18:24:04 UTC
++++ src/murmur/Server.cpp
+@@ -181,6 +181,15 @@ Server::Server(int snum, QObject *p) : QThread(p) {
+ 			} else {
+ #ifdef Q_OS_UNIX
+ 				int val = 0xe0;
++#ifdef __FreeBSD__
++				if (addr.ss_family == AF_INET6) {
++					if (setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, &val, sizeof(val))) {
++						val = 0x80;
++						if (setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, &val, sizeof(val)))
++							log(QString("Server: Failed to set IPV6_TCLASS for UDP Socket, errno = ").arg(errno));
++					}
++				} else
++#endif
+ 				if (setsockopt(sock, IPPROTO_IP, IP_TOS, &val, sizeof(val))) {
+ 					val = 0x80;
+ 					if (setsockopt(sock, IPPROTO_IP, IP_TOS, &val, sizeof(val)))