diff --git a/device/device.go b/device/device.go index d860ed3..a7838b5 100644 --- a/device/device.go +++ b/device/device.go @@ -340,9 +340,9 @@ func NewDevice(tunDevice tun.Device, logger *Logger) *Device { cpus := runtime.NumCPU() device.state.stopping.Wait() for i := 0; i < cpus; i++ { - device.state.stopping.Add(2) // decryption and handshake go device.RoutineEncryption() go device.RoutineDecryption() + device.state.stopping.Add(1) // handshake go device.RoutineHandshake() } diff --git a/device/receive.go b/device/receive.go index 0b70137..3b0f36c 100644 --- a/device/receive.go +++ b/device/receive.go @@ -210,10 +210,8 @@ func (device *Device) RoutineReceiveIncoming(IP int, bind conn.Bind) { func (device *Device) RoutineDecryption() { var nonce [chacha20poly1305.NonceSize]byte - defer func() { - device.log.Verbosef("Routine: decryption worker - stopped") - device.state.stopping.Done() - }() + + defer device.log.Verbosef("Routine: decryption worker - stopped") device.log.Verbosef("Routine: decryption worker - started") for elem := range device.queue.decryption.c {