Browse Source

fix crash when closing

pull/97/head
aler9 6 years ago
parent
commit
495a791b2d
  1. 3
      main.go
  2. 30
      utils.go

3
main.go

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

30
utils.go

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

Loading…
Cancel
Save