multi: don't access loop variables in goroutines

This commit makes sure that no loop variables or other temporary
variables are accessed directly in a goroutine but are instead passed
into the goroutine through a parameter. This makes sure a copy of the
value is put on the stack and is not changed while the outside loop
continues.
This commit is contained in:
Oliver Gugger
2022-11-21 13:06:24 +01:00
parent e7170ef819
commit ad8e25cbc9
7 changed files with 33 additions and 21 deletions

View File

@@ -235,7 +235,9 @@ out:
//
// TODO(wilmer): add retry logic if rescan fails?
b.wg.Add(1)
go func() {
//nolint:lll
go func(msg *chainntnfs.HistoricalConfDispatch) {
defer b.wg.Done()
confDetails, _, err := b.historicalConfDetails(
@@ -269,7 +271,7 @@ out:
"details of %v: %v",
msg.ConfRequest, err)
}
}()
}(msg)
case *chainntnfs.HistoricalSpendDispatch:
// In order to ensure we don't block the caller
@@ -278,7 +280,9 @@ out:
//
// TODO(wilmer): add retry logic if rescan fails?
b.wg.Add(1)
go func() {
//nolint:lll
go func(msg *chainntnfs.HistoricalSpendDispatch) {
defer b.wg.Done()
spendDetails, err := b.historicalSpendDetails(
@@ -320,7 +324,7 @@ out:
"details of %v: %v",
msg.SpendRequest, err)
}
}()
}(msg)
case *blockEpochRegistration:
chainntnfs.Log.Infof("New block epoch subscription")