diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2018-04-18 20:29:48 +0200 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2018-04-18 20:29:48 +0200 |
commit | ac9912345b4da5034ea93f5f245ea2ce04815bd5 (patch) | |
tree | b371c03e54c7d1ee2c882fdf596b011a936d2ad7 /timers.go | |
parent | 26a56a652eeeece7677ba4f1896da34c83930652 (diff) |
Fixed read from closed channel
A premature waitgroup .Done resulted in reading from closed channel.
This caused a nil-pointer deref & crash.
Added additional debugging when closing routines.
Diffstat (limited to 'timers.go')
-rw-r--r-- | timers.go | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -183,13 +183,15 @@ func (peer *Peer) sendNewHandshake() error { func (peer *Peer) RoutineTimerHandler() { - defer peer.routines.stopping.Done() - device := peer.device logInfo := device.log.Info logDebug := device.log.Debug - logDebug.Println("Routine, timer handler, started for peer", peer.String()) + + defer func() { + logDebug.Println(peer.String(), ": Routine, Timer handler, Stopped") + peer.routines.stopping.Done() + }() // reset all timers @@ -205,6 +207,8 @@ func (peer *Peer) RoutineTimerHandler() { peer.timer.keepalivePersistent.Reset(duration) } + logDebug.Println("Routine, timer handler, started for peer", peer.String()) + // signal synchronised setup complete peer.routines.starting.Done() |