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:
1 file changed
+2
-2
@@ -1912,11 +1912,11 @@ func (n *TxNotifier) dispatchSpendReorg(ntfn *SpendNtfn) error {
|
|||||||
// closes the event channels of all registered notifications that have not been
|
// closes the event channels of all registered notifications that have not been
|
||||||
// dispatched yet.
|
// dispatched yet.
|
||||||
func (n *TxNotifier) TearDown() {
|
func (n *TxNotifier) TearDown() {
|
||||||
|
close(n.quit)
|
||||||
|
|
||||||
n.Lock()
|
n.Lock()
|
||||||
defer n.Unlock()
|
defer n.Unlock()
|
||||||
|
|
||||||
close(n.quit)
|
|
||||||
|
|
||||||
for _, confSet := range n.confNotifications {
|
for _, confSet := range n.confNotifications {
|
||||||
for _, ntfn := range confSet.ntfns {
|
for _, ntfn := range confSet.ntfns {
|
||||||
close(ntfn.Event.Confirmed)
|
close(ntfn.Event.Confirmed)
|
||||||
|
|||||||
Reference in new issue
Block a user