chainntnfs: acquire TxNotifier lock after closing quit chan

This prevents a deadlock while tearing down the TxNotifier if it's
currently blocked delivering a notification. By closing the quit chan
first, we ensure blocked sends/reads can exit and allow the TxNotifier
to proceed tearing down.
This commit is contained in:
Wilmer Paulino 2019-08-16 19:58:26 -07:00
parent 17b6205f3a
commit cb1d6683d9
No known key found for this signature in database
GPG Key ID: 6DF57B9F9514972F

View File

@ -1912,11 +1912,11 @@ func (n *TxNotifier) dispatchSpendReorg(ntfn *SpendNtfn) error {
// closes the event channels of all registered notifications that have not been
// dispatched yet.
func (n *TxNotifier) TearDown() {
close(n.quit)
n.Lock()
defer n.Unlock()
close(n.quit)
for _, confSet := range n.confNotifications {
for _, ntfn := range confSet.ntfns {
close(ntfn.Event.Confirmed)