From 7172b0756e0aaf78a9bcdfa104971af3ec84a00f Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Thu, 9 Apr 2026 19:23:39 +0300 Subject: [PATCH] fix(peer): Improve error handling and logging in sendLeave and Close --- internal/telemost/peer.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/internal/telemost/peer.go b/internal/telemost/peer.go index cefb5f3..6095087 100644 --- a/internal/telemost/peer.go +++ b/internal/telemost/peer.go @@ -474,6 +474,7 @@ func (p *Peer) sendLeave() { defer p.wsMu.Unlock() if p.ws == nil { + log.Println("WebSocket already closed, cannot send leave") return } @@ -481,9 +482,12 @@ func (p *Peer) sendLeave() { "uid": uuid.New().String(), "leave": map[string]interface{}{}, } - if err := p.ws.WriteJSON(leave); err == nil { + + if err := p.ws.WriteJSON(leave); err != nil { + log.Printf("Failed to send leave: %v", err) + } else { log.Println("Sent leave message to server") - time.Sleep(200 * time.Millisecond) + time.Sleep(500 * time.Millisecond) } } @@ -492,8 +496,10 @@ func (p *Peer) Close() error { p.sendQueueClosed.Store(true) + log.Println("Sending leave message...") p.sendLeave() + log.Println("Closing channels...") if p.closeCh != nil { select { case <-p.closeCh: @@ -502,13 +508,6 @@ func (p *Peer) Close() error { } } - if p.ws != nil { - log.Println("Closing WebSocket...") - p.wsMu.Lock() - p.ws.Close() - p.wsMu.Unlock() - } - log.Println("Waiting for goroutines...") done := make(chan struct{}) go func() { @@ -538,6 +537,13 @@ func (p *Peer) Close() error { p.pcSub.Close() } + if p.ws != nil { + log.Println("Closing WebSocket...") + p.wsMu.Lock() + p.ws.Close() + p.wsMu.Unlock() + } + log.Println("Peer closed") return nil }