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: @@ -314,6 +314,9 @@ outer:
}
}()
p.udpPublishersMap.clear()
p.readersMap.clear()
for _, p := range p.paths {
p.onClose(true)
}

30
utils.go

@ -211,15 +211,11 @@ func newUdpPublisherMap() *udpPublishersMap { @@ -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) { @@ -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 { @@ -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()

Loading…
Cancel
Save