From 0320f9f88f37e7d24e634649d691789eee0aefe6 Mon Sep 17 00:00:00 2001 From: Nulo Date: Sun, 29 Jan 2023 22:03:18 -0300 Subject: [PATCH] gitea-ci: cerrar conexiones --- gitea-ci/log.go | 7 +++++-- gitea-ci/webhook.go | 10 ++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gitea-ci/log.go b/gitea-ci/log.go index ae9d478..684f1f2 100644 --- a/gitea-ci/log.go +++ b/gitea-ci/log.go @@ -27,7 +27,7 @@ func (l logWebsocket) ServeHTTP(w http.ResponseWriter, r *http.Request) { } defer c.Close(websocket.StatusInternalError, "the sky is falling") - ch := make(chan *[]byte) + ch := make(chan *[]byte, 1000) err = run.addWriter(conn{ch: ch}) if err != nil { log.Println("addWriter", err) @@ -38,7 +38,10 @@ func (l logWebsocket) ServeHTTP(w http.ResponseWriter, r *http.Request) { if payload == nil { break } else { - c.Write(context.Background(), websocket.MessageBinary, *payload) + err = c.Write(context.Background(), websocket.MessageBinary, *payload) + if err != nil { + return + } } } c.Close(websocket.StatusNormalClosure, "") diff --git a/gitea-ci/webhook.go b/gitea-ci/webhook.go index 0dde14c..0c4ea9b 100644 --- a/gitea-ci/webhook.go +++ b/gitea-ci/webhook.go @@ -23,6 +23,7 @@ import ( type run struct { mutex sync.Mutex + finished bool previous []byte writers []io.WriteCloser } @@ -45,13 +46,18 @@ func (r *run) addWriter(w io.WriteCloser) (err error) { r.mutex.Lock() defer r.mutex.Unlock() - go w.Write(slices.Clone(r.previous)) - r.writers = append(r.writers, w) + w.Write(slices.Clone(r.previous)) + if r.finished { + w.Close() + } else { + r.writers = append(r.writers, w) + } return } func (r *run) finishRun() { r.mutex.Lock() defer r.mutex.Unlock() + r.finished = true for _, c := range r.writers { c.Close() }