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.
This commit is contained in:
Mathias Hall-Andersen
2018-04-18 20:29:48 +02:00
parent 26a56a652e
commit ac9912345b
4 changed files with 26 additions and 10 deletions

View File

@ -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()