From b1a290e7d0244f8797a3ad03e001f9b1c11bb823 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Wed, 2 Mar 2022 20:26:48 +0100 Subject: [PATCH] Properly disconnect clients --- mount.go | 3 ++- queue.go | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mount.go b/mount.go index 608f38d..98ab32e 100644 --- a/mount.go +++ b/mount.go @@ -220,7 +220,6 @@ func (m *StreamMount) Process(group *sync.WaitGroup) { } if l.Write(packet) != nil { toRemove = append(toRemove, i) - l.Close() } } @@ -228,7 +227,9 @@ func (m *StreamMount) Process(group *sync.WaitGroup) { m.listenersLock.Lock() //TODO: remove more than one per iteration for _, i := range toRemove { + l := m.listeners[i] m.listeners = append(m.listeners[:i], m.listeners[i+1:]...) + l.Close() break } m.listenersLock.Unlock() diff --git a/queue.go b/queue.go index 6ddcf72..8444859 100644 --- a/queue.go +++ b/queue.go @@ -8,6 +8,7 @@ import ( "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/opus" "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/tta" "git.gammaspectra.live/S.O.N.G/Kirika/audio/packetizer" + "io" "log" "net/http" "os" @@ -230,12 +231,13 @@ type httpWriter struct { func (h *httpWriter) Write(p []byte) (n int, err error) { if h.writer != nil { - _, err = h.writer.Write(p) + n, err = h.writer.Write(p) if err != nil { h.writer = nil } + return } - return len(p), nil + return 0, io.EOF } func (h *httpWriter) Close() (err error) {