diff --git a/fundingmanager.go b/fundingmanager.go index f1163fea..5bc42586 100644 --- a/fundingmanager.go +++ b/fundingmanager.go @@ -1617,7 +1617,7 @@ func (f *fundingManager) handleFundingSigned(fmsg *fundingSignedMsg) { // is over. // TODO(roasbeef): add abstraction over updates to accommodate // long-polling, or SSE, etc. - resCtx.updates <- &lnrpc.OpenStatusUpdate{ + upd := &lnrpc.OpenStatusUpdate{ Update: &lnrpc.OpenStatusUpdate_ChanPending{ ChanPending: &lnrpc.PendingUpdate{ Txid: fundingPoint.Hash[:], @@ -1626,6 +1626,12 @@ func (f *fundingManager) handleFundingSigned(fmsg *fundingSignedMsg) { }, } + select { + case resCtx.updates <- upd: + case <-f.quit: + return + } + // At this point we have broadcast the funding transaction and done all // necessary processing. f.wg.Add(1) @@ -1693,7 +1699,7 @@ func (f *fundingManager) handleFundingSigned(fmsg *fundingSignedMsg) { // Give the caller a final update notifying them that // the channel is now open. // TODO(roasbeef): only notify after recv of funding locked? - resCtx.updates <- &lnrpc.OpenStatusUpdate{ + upd := &lnrpc.OpenStatusUpdate{ Update: &lnrpc.OpenStatusUpdate_ChanOpen{ ChanOpen: &lnrpc.ChannelOpenUpdate{ ChannelPoint: &lnrpc.ChannelPoint{ @@ -1706,6 +1712,12 @@ func (f *fundingManager) handleFundingSigned(fmsg *fundingSignedMsg) { }, } + select { + case resCtx.updates <- upd: + case <-f.quit: + return + } + err = f.annAfterSixConfs(completeChan, shortChanID) if err != nil { fndgLog.Errorf("failed sending channel announcement: %v",