mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-02 03:28:25 +08:00
fix goroutine leaks in DHT commands
License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
@ -93,7 +93,11 @@ var queryDhtCmd = &cmds.Command{
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for e := range events {
|
for e := range events {
|
||||||
outChan <- e
|
select {
|
||||||
|
case outChan <- e:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
},
|
},
|
||||||
@ -181,7 +185,11 @@ var findProvidersDhtCmd = &cmds.Command{
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for e := range events {
|
for e := range events {
|
||||||
outChan <- e
|
select {
|
||||||
|
case outChan <- e:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -301,7 +309,11 @@ var provideRefDhtCmd = &cmds.Command{
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for e := range events {
|
for e := range events {
|
||||||
outChan <- e
|
select {
|
||||||
|
case outChan <- e:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -427,7 +439,11 @@ var findPeerDhtCmd = &cmds.Command{
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for v := range events {
|
for v := range events {
|
||||||
outChan <- v
|
select {
|
||||||
|
case outChan <- v:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -529,7 +545,10 @@ Different key types can specify other 'best' rules.
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for e := range events {
|
for e := range events {
|
||||||
outChan <- e
|
select {
|
||||||
|
case outChan <- e:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -643,7 +662,11 @@ NOTE: A value may not exceed 2048 bytes.
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(outChan)
|
defer close(outChan)
|
||||||
for e := range events {
|
for e := range events {
|
||||||
outChan <- e
|
select {
|
||||||
|
case outChan <- e:
|
||||||
|
case <-req.Context().Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user