clean shutdown with udp

master
bel 2023-03-24 21:14:27 -06:00
parent aa16b66332
commit 01777c8c3e
1 changed files with 11 additions and 3 deletions

View File

@ -33,18 +33,26 @@ func (udp UDP) listen() {
for udp.ctx.Err() == nil { for udp.ctx.Err() == nil {
buff := make([]byte, 256) buff := make([]byte, 256)
n, _, err := udp.conn.ReadFrom(buff) n, _, err := udp.conn.ReadFrom(buff)
if err != nil { if err != nil && udp.ctx.Err() == nil {
panic(err) panic(err)
} }
if debugging { if debugging {
log.Printf("raw.UDP.Read() => %s", buff[:n]) 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 { 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() { func (udp UDP) Close() {