device: create peer queues at peer creation time
Rather than racing with Start(), since we're never destroying these queues, we just set the variables at creation time. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
587a2b2a20
commit
5bf8d73127
@ -88,6 +88,9 @@ func (device *Device) NewPeer(pk NoisePublicKey) (*Peer, error) {
|
|||||||
|
|
||||||
peer.cookieGenerator.Init(pk)
|
peer.cookieGenerator.Init(pk)
|
||||||
peer.device = device
|
peer.device = device
|
||||||
|
peer.queue.outbound = newAutodrainingOutboundQueue(device)
|
||||||
|
peer.queue.inbound = newAutodrainingInboundQueue(device)
|
||||||
|
peer.queue.staged = make(chan *QueueOutboundElement, QueueStagedSize)
|
||||||
|
|
||||||
// map public key
|
// map public key
|
||||||
_, ok := device.peers.keyMap[pk]
|
_, ok := device.peers.keyMap[pk]
|
||||||
@ -179,12 +182,6 @@ func (peer *Peer) Start() {
|
|||||||
peer.handshake.lastSentHandshake = time.Now().Add(-(RekeyTimeout + time.Second))
|
peer.handshake.lastSentHandshake = time.Now().Add(-(RekeyTimeout + time.Second))
|
||||||
peer.handshake.mutex.Unlock()
|
peer.handshake.mutex.Unlock()
|
||||||
|
|
||||||
// prepare queues (once)
|
|
||||||
if peer.queue.outbound == nil {
|
|
||||||
peer.queue.outbound = newAutodrainingOutboundQueue(device)
|
|
||||||
peer.queue.inbound = newAutodrainingInboundQueue(device)
|
|
||||||
peer.queue.staged = make(chan *QueueOutboundElement, QueueStagedSize)
|
|
||||||
}
|
|
||||||
peer.device.queue.encryption.wg.Add(1) // keep encryption queue open for our writes
|
peer.device.queue.encryption.wg.Add(1) // keep encryption queue open for our writes
|
||||||
|
|
||||||
peer.timersStart()
|
peer.timersStart()
|
||||||
|
Loading…
Reference in New Issue
Block a user