From 3569c341708ac37f10317f719e4fd3044d708f03 Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 7 May 2020 14:50:16 +0200 Subject: [PATCH] Ensure channels are always closed --- charger/keba.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/charger/keba.go b/charger/keba.go index 8b78f2818..91cfba350 100644 --- a/charger/keba.go +++ b/charger/keba.go @@ -89,6 +89,8 @@ func (c *Keba) send(msg string) error { func (c *Keba) receive(report int, resC chan<- keba.UDPMsg, errC chan<- error, closeC <-chan struct{}) { t := time.NewTimer(c.timeout) + defer close(resC) + defer close(errC) for { select { case msg := <-c.recv: @@ -97,7 +99,7 @@ func (c *Keba) receive(report int, resC chan<- keba.UDPMsg, errC chan<- error, c resC <- msg return } - // matching report result + // matching report id if msg.Report != nil && report == msg.Report.ID { resC <- msg return @@ -106,8 +108,6 @@ func (c *Keba) receive(report int, resC chan<- keba.UDPMsg, errC chan<- error, c errC <- errors.New("recv timeout") return case <-closeC: - close(resC) - close(errC) return } }