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

@@ -500,8 +500,8 @@ func (peer *Peer) RoutineSequentialReceiver() {
logError := device.log.Error
logDebug := device.log.Debug
func() {
defer peer.routines.stopping.Done()
defer func() {
peer.routines.stopping.Done()
logDebug.Println(peer.String(), ": Routine, Sequential Receiver, Stopped")
}()
@@ -516,7 +516,11 @@ func (peer *Peer) RoutineSequentialReceiver() {
case <-peer.routines.stop.Wait():
return
case elem := <-peer.queue.inbound:
case elem, ok := <-peer.queue.inbound:
if !ok {
return
}
// wait for decryption