From fad9ebed7b87c720fa0dfce03031dd9793911ac4 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sun, 21 Feb 2021 10:05:33 +0000
Subject: [PATCH] Do not list streams with zero listeners on the debug page

---
 node/debug.go | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/node/debug.go b/node/debug.go
index fe59f70c..b39b80e4 100644
--- a/node/debug.go
+++ b/node/debug.go
@@ -45,6 +45,14 @@ type mountStatus struct {
 	TransMounts  []*mountStatus
 }
 
+func (m *mountStatus) totalListeners() int {
+	l := m.Listeners
+	for _, ms := range m.TransMounts {
+		l += ms.Listeners
+	}
+	return l
+}
+
 func newMountStatus(m *pb.Mount, nodes []*nodeInfo, icecastMounts map[string]*pb.IcecastMount) *mountStatus {
 	var listeners int
 	for _, n := range nodes {
@@ -118,6 +126,16 @@ func mountsToStatus(mounts []*pb.Mount, nodes []*nodeInfo, icecastMounts map[str
 	return msl
 }
 
+func filterActiveMountStatus(mounts []*mountStatus) []*mountStatus {
+	out := make([]*mountStatus, 0, len(mounts))
+	for _, ms := range mounts {
+		if ms.totalListeners() > 0 {
+			out = append(out, ms)
+		}
+	}
+	return out
+}
+
 type statusPageHandler struct {
 	n      *Node
 	domain string
@@ -144,7 +162,8 @@ func (s *statusPageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	}
 	sort.Sort(statusList(statuses))
 
-	ms := mountsToStatus(s.n.mounts.GetMounts(), nodes, exemplary)
+	ms := filterActiveMountStatus(
+		mountsToStatus(s.n.mounts.GetMounts(), nodes, exemplary))
 	vars := struct {
 		Domain string
 		Nodes  []*pb.Status
-- 
GitLab