p2p/enode: closed channel not needed in bufferIter

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2025-04-28 17:05:42 +02:00
parent c29688a255
commit 2a9b0605ee
No known key found for this signature in database
GPG key ID: 0FE274EE8C95166E

View file

@ -238,7 +238,6 @@ type BufferIter struct {
it Iterator
buffer chan *Node
head *Node
closed chan struct{}
closeOnce sync.Once
}
@ -247,8 +246,6 @@ func NewBufferIter(it Iterator, size int) Iterator {
b := BufferIter{
it: it,
buffer: make(chan *Node, size),
head: nil,
closed: make(chan struct{}),
}
go func() {
@ -256,22 +253,14 @@ func NewBufferIter(it Iterator, size int) Iterator {
defer close(b.buffer)
// If instead the bufferIterator is closed, we bail out of the loop.
for b.it.Next() {
select {
case b.buffer <- b.it.Node():
case <-b.closed:
return
}
b.buffer <- b.it.Node()
}
}()
return &b
}
func (b *BufferIter) Next() bool {
select {
case b.head = <-b.buffer:
case <-b.closed:
b.head = nil
}
b.head = <-b.buffer
return b.head != nil
}
@ -282,7 +271,6 @@ func (b *BufferIter) Node() *Node {
func (b *BufferIter) Close() {
b.closeOnce.Do(func() {
b.it.Close()
close(b.closed)
// Wait for Next to terminate.
for range b.buffer {
}