1
0
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:
Steven Allen
2017-11-21 15:39:37 -08:00
parent b18b1e90c2
commit 016b005333

View File

@ -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
}
} }
}() }()