fixes #1; events.go: claim full lock on delete listener
This commit is contained in:
parent
acabc4d3bb
commit
c15bcd487f
|
@ -74,13 +74,15 @@ func (evsw *EventSwitch) RemoveListener(listenerID string) {
|
|||
// Get and remove listener
|
||||
evsw.mtx.RLock()
|
||||
listener := evsw.listeners[listenerID]
|
||||
delete(evsw.listeners, listenerID)
|
||||
evsw.mtx.RUnlock()
|
||||
|
||||
if listener == nil {
|
||||
return
|
||||
}
|
||||
|
||||
evsw.mtx.Lock()
|
||||
delete(evsw.listeners, listenerID)
|
||||
evsw.mtx.Unlock()
|
||||
|
||||
// Remove callback for each event.
|
||||
listener.SetRemoved()
|
||||
for _, event := range listener.GetEvents() {
|
||||
|
|
Loading…
Reference in New Issue