mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-22 14:22:37 +01:00
fundingmanager: hold lock during loop
As a follow-up to #4560 we actually need to hold the reservation mutex during the full loop where we count the pending reservations. Otherwise the results might become inaccurate for concurrent funding flows.
This commit is contained in:
parent
e4764a67cc
commit
199336a342
1 changed files with 3 additions and 4 deletions
|
@ -1206,12 +1206,10 @@ func (f *fundingManager) handleFundingOpen(fmsg *fundingOpenMsg) {
|
|||
msg := fmsg.msg
|
||||
amt := msg.FundingAmount
|
||||
|
||||
// We count the number of pending channels for this peer. This is the
|
||||
// sum of the active reservations and the channels pending open in the
|
||||
// database.
|
||||
// We get all pending channels for this peer. This is the list of the
|
||||
// active reservations and the channels pending open in the database.
|
||||
f.resMtx.RLock()
|
||||
reservations := f.activeReservations[peerIDKey]
|
||||
f.resMtx.RUnlock()
|
||||
|
||||
// We don't count reservations that were created from a canned funding
|
||||
// shim. The user has registered the shim and therefore expects this
|
||||
|
@ -1222,6 +1220,7 @@ func (f *fundingManager) handleFundingOpen(fmsg *fundingOpenMsg) {
|
|||
numPending++
|
||||
}
|
||||
}
|
||||
f.resMtx.RUnlock()
|
||||
|
||||
// Also count the channels that are already pending. There we don't know
|
||||
// the underlying intent anymore, unfortunately.
|
||||
|
|
Loading…
Add table
Reference in a new issue