aboutsummaryrefslogtreecommitdiff
path: root/device/device.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 19:26:45 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 19:26:45 +0100
commitda32fe328bb2958773b07280c62eaebb6857f4df (patch)
tree6e900580cc61e74f7d60dc8b9136dba8a62c7e96 /device/device.go
parent4eab21a7b7192dc806a3d60c46827866fc8942fe (diff)
downloadwireguard-go-da32fe328bb2958773b07280c62eaebb6857f4df.tar.gz
wireguard-go-da32fe328bb2958773b07280c62eaebb6857f4df.zip
device: handshake routine writes into encryption queue
Since RoutineHandshake calls peer.SendKeepalive(), it potentially is a writer into the encryption queue, so we need to bump the wg count. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'device/device.go')
-rw-r--r--device/device.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/device/device.go b/device/device.go
index 9375448..7f96a1e 100644
--- a/device/device.go
+++ b/device/device.go
@@ -305,6 +305,7 @@ func NewDevice(tunDevice tun.Device, logger *Logger) *Device {
cpus := runtime.NumCPU()
device.state.stopping.Wait()
+ device.queue.encryption.wg.Add(cpus) // One for each RoutineHandshake
for i := 0; i < cpus; i++ {
go device.RoutineEncryption()
go device.RoutineDecryption()