fix crash when closing

This commit is contained in:
aler9 2020-09-19 13:51:55 +02:00
parent b526330607
commit 495a791b2d
2 changed files with 25 additions and 8 deletions

View File

@ -314,6 +314,9 @@ outer:
}
}()
p.udpPublishersMap.clear()
p.readersMap.clear()
for _, p := range p.paths {
p.onClose(true)
}

View File

@ -211,15 +211,11 @@ func newUdpPublisherMap() *udpPublishersMap {
}
}
func (m *udpPublishersMap) get(addr udpPublisherAddr) *udpPublisher {
m.mutex.RLock()
defer m.mutex.RUnlock()
func (m *udpPublishersMap) clear() {
m.mutex.Lock()
defer m.mutex.Unlock()
el, ok := m.ma[addr]
if !ok {
return nil
}
return el
m.ma = make(map[udpPublisherAddr]*udpPublisher)
}
func (m *udpPublishersMap) add(addr udpPublisherAddr, pub *udpPublisher) {
@ -236,6 +232,17 @@ func (m *udpPublishersMap) remove(addr udpPublisherAddr) {
delete(m.ma, addr)
}
func (m *udpPublishersMap) get(addr udpPublisherAddr) *udpPublisher {
m.mutex.RLock()
defer m.mutex.RUnlock()
el, ok := m.ma[addr]
if !ok {
return nil
}
return el
}
type readersMap struct {
mutex sync.RWMutex
ma map[*client]struct{}
@ -247,6 +254,13 @@ func newReadersMap() *readersMap {
}
}
func (m *readersMap) clear() {
m.mutex.Lock()
defer m.mutex.Unlock()
m.ma = make(map[*client]struct{})
}
func (m *readersMap) add(reader *client) {
m.mutex.Lock()
defer m.mutex.Unlock()