From 01777c8c3e47a84089685ff958e47494c8240b1e Mon Sep 17 00:00:00 2001 From: bel Date: Fri, 24 Mar 2023 21:14:27 -0600 Subject: [PATCH] clean shutdown with udp --- src/device/input/raw/udp.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/device/input/raw/udp.go b/src/device/input/raw/udp.go index 96f24fa..edfc7b4 100644 --- a/src/device/input/raw/udp.go +++ b/src/device/input/raw/udp.go @@ -33,18 +33,26 @@ func (udp UDP) listen() { for udp.ctx.Err() == nil { buff := make([]byte, 256) n, _, err := udp.conn.ReadFrom(buff) - if err != nil { + if err != nil && udp.ctx.Err() == nil { panic(err) } if debugging { log.Printf("raw.UDP.Read() => %s", buff[:n]) } - udp.c <- buff[:n] + select { + case udp.c <- buff[:n]: + case <-udp.ctx.Done(): + } } } func (udp UDP) Read() []byte { - return <-udp.c + select { + case v := <-udp.c: + return v + case <-udp.ctx.Done(): + return []byte{} + } } func (udp UDP) Close() {