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() diff --git a/device/receive.go b/device/receive.go index 3fc6831..6b9cccd 100644 --- a/device/receive.go +++ b/device/receive.go @@ -237,7 +237,10 @@ func (device *Device) RoutineDecryption() { /* Handles incoming packets related to handshake */ func (device *Device) RoutineHandshake() { - defer device.log.Verbosef("Routine: handshake worker - stopped") + defer func() { + device.log.Verbosef("Routine: handshake worker - stopped") + device.queue.encryption.wg.Done() + }() device.log.Verbosef("Routine: handshake worker - started") for elem := range device.queue.handshake.c {