chainntnfs/txnotifier: remove events on teardown

If a concurrent call to cancel is made while the notifier is shutting
down, this would cause a panic (close of closed channel) since the
events are not removed from the notification sets.
This commit is contained in:
Conner Fromknecht 2020-08-12 17:42:50 -07:00
parent 37a29b4869
commit ff7bfb492a
No known key found for this signature in database
GPG Key ID: E7D737B67FA592C7

View File

@ -1959,19 +1959,21 @@ func (n *TxNotifier) TearDown() {
defer n.Unlock()
for _, confSet := range n.confNotifications {
for _, ntfn := range confSet.ntfns {
for confID, ntfn := range confSet.ntfns {
close(ntfn.Event.Confirmed)
close(ntfn.Event.Updates)
close(ntfn.Event.NegativeConf)
close(ntfn.Event.Done)
delete(confSet.ntfns, confID)
}
}
for _, spendSet := range n.spendNotifications {
for _, ntfn := range spendSet.ntfns {
for spendID, ntfn := range spendSet.ntfns {
close(ntfn.Event.Spend)
close(ntfn.Event.Reorg)
close(ntfn.Event.Done)
delete(spendSet.ntfns, spendID)
}
}
}