DownloadHeaders: Instead of using doneChan - close blockHeadersMessageChan. (#1523)

This commit is contained in:
Svarog 2021-02-11 16:59:31 +02:00 committed by GitHub
parent 05d1671f3a
commit 6db296b98b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -221,7 +221,6 @@ func (flow *handleRelayInvsFlow) downloadHeaders(highestSharedBlockHash *externa
// headers // headers
blockHeadersMessageChan := make(chan *appmessage.BlockHeadersMessage, 2) blockHeadersMessageChan := make(chan *appmessage.BlockHeadersMessage, 2)
errChan := make(chan error) errChan := make(chan error)
doneChan := make(chan interface{})
spawn("handleRelayInvsFlow-downloadHeaders", func() { spawn("handleRelayInvsFlow-downloadHeaders", func() {
for { for {
blockHeadersMessage, doneIBD, err := flow.receiveHeaders() blockHeadersMessage, doneIBD, err := flow.receiveHeaders()
@ -230,7 +229,7 @@ func (flow *handleRelayInvsFlow) downloadHeaders(highestSharedBlockHash *externa
return return
} }
if doneIBD { if doneIBD {
doneChan <- struct{}{} close(blockHeadersMessageChan)
return return
} }
@ -246,7 +245,10 @@ func (flow *handleRelayInvsFlow) downloadHeaders(highestSharedBlockHash *externa
for { for {
select { select {
case blockHeadersMessage := <-blockHeadersMessageChan: case blockHeadersMessage, ok := <-blockHeadersMessageChan:
if !ok {
return nil
}
for _, header := range blockHeadersMessage.BlockHeaders { for _, header := range blockHeadersMessage.BlockHeaders {
err = flow.processHeader(header) err = flow.processHeader(header)
if err != nil { if err != nil {
@ -255,8 +257,6 @@ func (flow *handleRelayInvsFlow) downloadHeaders(highestSharedBlockHash *externa
} }
case err := <-errChan: case err := <-errChan:
return err return err
case <-doneChan:
return nil
} }
} }
} }