mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-06-08 13:24:44 +00:00
fix(peer): Improve error handling and logging in sendLeave and Close
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user