server: use nil errChan for broadcasts
This skips creating errChans when sending messages to peer during broadcast. This should be a minor memory optimization, as well as not requiring channel sends on those which will never be read.
This commit is contained in:
parent
0691b21a30
commit
d20adc8e0e
16
server.go
16
server.go
@ -1091,7 +1091,7 @@ func (s *server) SendToPeer(target *btcec.PublicKey,
|
||||
case err := <-errChan:
|
||||
return err
|
||||
case <-targetPeer.quit:
|
||||
return fmt.Errorf("peer shutting down")
|
||||
return ErrPeerExiting
|
||||
case <-s.quit:
|
||||
return ErrServerShuttingDown
|
||||
}
|
||||
@ -1183,7 +1183,8 @@ func (s *server) sendPeerMessages(
|
||||
// event, we defer a call to Done on both WaitGroups to 1) ensure that
|
||||
// server will be able to shutdown after its go routines exit, and 2)
|
||||
// so the server can return to the caller of BroadcastMessage.
|
||||
if wg != nil {
|
||||
isBroadcast := wg != nil
|
||||
if isBroadcast {
|
||||
defer s.wg.Done()
|
||||
defer wg.Done()
|
||||
}
|
||||
@ -1193,9 +1194,16 @@ func (s *server) sendPeerMessages(
|
||||
// the queue.
|
||||
var errChans []chan error
|
||||
for _, msg := range msgs {
|
||||
errChan := make(chan error, 1)
|
||||
// If this is not broadcast, create error channels to provide
|
||||
// synchronous feedback regarding the delivery of the message to
|
||||
// a specific peer.
|
||||
var errChan chan error
|
||||
if !isBroadcast {
|
||||
errChan = make(chan error, 1)
|
||||
errChans = append(errChans, errChan)
|
||||
}
|
||||
|
||||
targetPeer.queueMsg(msg, errChan)
|
||||
errChans = append(errChans, errChan)
|
||||
}
|
||||
|
||||
return errChans
|
||||
|
Loading…
Reference in New Issue
Block a user