Skip to content

Commit 7c461bb

Browse files
authored
fix: clear sync.Map properly (#630)
1 parent 6bbdc03 commit 7c461bb

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

localparticipant.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -545,8 +545,10 @@ func (p *LocalParticipant) handleParticipantDisconnected(identity string) {
545545

546546
p.rpcPendingResponses.Range(func(key, value interface{}) bool {
547547
if value.(rpcPendingResponseHandler).participantIdentity == identity {
548-
value.(rpcPendingResponseHandler).resolve(nil, rpcErrorFromBuiltInCodes(RpcRecipientDisconnected, nil))
549-
p.rpcPendingResponses.Delete(key)
548+
value, ok := p.rpcPendingResponses.LoadAndDelete(key)
549+
if ok {
550+
value.(rpcPendingResponseHandler).resolve(nil, rpcErrorFromBuiltInCodes(RpcRecipientDisconnected, nil))
551+
}
550552
}
551553
return true
552554
})
@@ -660,8 +662,8 @@ func (p *LocalParticipant) PerformRpc(params PerformRpcParams) (*string, error)
660662
}
661663

662664
func (p *LocalParticipant) cleanup() {
663-
p.rpcPendingAcks = &sync.Map{}
664-
p.rpcPendingResponses = &sync.Map{}
665+
p.rpcPendingAcks.Clear()
666+
p.rpcPendingResponses.Clear()
665667
}
666668

667669
// StreamText creates a new text stream writer with the provided options.

remoteparticipant.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package lksdk
1616

1717
import (
18-
"sync"
1918
"time"
2019

2120
"github.com/pion/webrtc/v4"
@@ -171,14 +170,7 @@ func (p *RemoteParticipant) unpublishAllTracks() {
171170
}
172171
return true
173172
})
174-
eraseSyncMap(p.tracks)
175-
eraseSyncMap(p.audioTracks)
176-
eraseSyncMap(p.videoTracks)
177-
}
178-
179-
func eraseSyncMap(m *sync.Map) {
180-
m.Range(func(key interface{}, value interface{}) bool {
181-
m.Delete(key)
182-
return true
183-
})
173+
p.tracks.Clear()
174+
p.audioTracks.Clear()
175+
p.videoTracks.Clear()
184176
}

room.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -860,11 +860,11 @@ func (r *Room) cleanup() {
860860
r.engine.Close()
861861
r.LocalParticipant.closeTracks()
862862
r.setSid("", true)
863-
r.byteStreamHandlers = &sync.Map{}
864-
r.byteStreamReaders = &sync.Map{}
865-
r.textStreamHandlers = &sync.Map{}
866-
r.textStreamReaders = &sync.Map{}
867-
r.rpcHandlers = &sync.Map{}
863+
r.byteStreamHandlers.Clear()
864+
r.byteStreamReaders.Clear()
865+
r.textStreamHandlers.Clear()
866+
r.textStreamReaders.Clear()
867+
r.rpcHandlers.Clear()
868868
r.LocalParticipant.cleanup()
869869
}
870870

0 commit comments

Comments
 (0)