summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--device/device.go1
-rw-r--r--device/receive.go5
2 files changed, 5 insertions, 1 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()
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 {