mirror of
https://git.zx2c4.com/wireguard-go
synced 2025-10-04 00:06:25 +08:00
device: remove selects from encrypt/decrypt/inbound/outbound enqueuing
Block instead. Backpressure here is fine, probably preferable. This reduces code complexity. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:

committed by
Jason A. Donenfeld

parent
0cc15e7c7c
commit
2fe19ce54d
@@ -97,23 +97,6 @@ func addToNonceQueue(queue chan *QueueOutboundElement, elem *QueueOutboundElemen
|
||||
}
|
||||
}
|
||||
|
||||
func addToOutboundAndEncryptionQueues(outboundQueue chan *QueueOutboundElement, encryptionQueue chan *QueueOutboundElement, elem *QueueOutboundElement) {
|
||||
select {
|
||||
case outboundQueue <- elem:
|
||||
select {
|
||||
case encryptionQueue <- elem:
|
||||
return
|
||||
default:
|
||||
elem.Drop()
|
||||
elem.peer.device.PutMessageBuffer(elem.buffer)
|
||||
elem.Unlock()
|
||||
}
|
||||
default:
|
||||
elem.peer.device.PutMessageBuffer(elem.buffer)
|
||||
elem.peer.device.PutOutboundElement(elem)
|
||||
}
|
||||
}
|
||||
|
||||
/* Queues a keepalive if no packets are queued for peer
|
||||
*/
|
||||
func (peer *Peer) SendKeepalive() bool {
|
||||
@@ -457,7 +440,8 @@ NextPacket:
|
||||
elem.Lock()
|
||||
|
||||
// add to parallel and sequential queue
|
||||
addToOutboundAndEncryptionQueues(peer.queue.outbound, device.queue.encryption.c, elem)
|
||||
peer.queue.outbound <- elem
|
||||
device.queue.encryption.c <- elem
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user