From 1dd590b91b893a413666b6daaed848d89bab7f05 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Sat, 13 Jan 2018 09:00:37 +0100 Subject: Work on timer teardown + bug fixes Added waitgroups to peer struct for routine start / stop synchronisation --- src/send.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/send.go') diff --git a/src/send.go b/src/send.go index 9537f5e..fa13c91 100644 --- a/src/send.go +++ b/src/send.go @@ -192,7 +192,7 @@ func (peer *Peer) RoutineNonce() { for { NextPacket: select { - case <-peer.signal.stop.Wait(): + case <-peer.routines.stop.Wait(): return case elem := <-peer.queue.nonce: @@ -217,7 +217,7 @@ func (peer *Peer) RoutineNonce() { logDebug.Println("Clearing queue for", peer.String()) peer.FlushNonceQueue() goto NextPacket - case <-peer.signal.stop.Wait(): + case <-peer.routines.stop.Wait(): return } } @@ -309,15 +309,20 @@ func (device *Device) RoutineEncryption() { * The routine terminates then the outbound queue is closed. */ func (peer *Peer) RoutineSequentialSender() { + + defer peer.routines.stopping.Done() + device := peer.device logDebug := device.log.Debug logDebug.Println("Routine, sequential sender, started for", peer.String()) + peer.routines.starting.Done() + for { select { - case <-peer.signal.stop.Wait(): + case <-peer.routines.stop.Wait(): logDebug.Println( "Routine, sequential sender, stopped for", peer.String()) return -- cgit v1.2.3