From 61c1586082d21ad793447c3c4510230b492ffbc0 Mon Sep 17 00:00:00 2001 From: Irine Sistiana <49315432+IrineSistiana@users.noreply.github.com> Date: Wed, 20 Sep 2023 09:31:39 +0800 Subject: [PATCH 2/6] server: don't exit udp server on tempory read err --- pkg/server/udp.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/server/udp.go b/pkg/server/udp.go index 247455b..4dc1087 100644 --- a/pkg/server/udp.go +++ b/pkg/server/udp.go @@ -62,7 +62,13 @@ func ServeUDP(c *net.UDPConn, h Handler, opts UDPServerOpts) error { for { n, oobn, _, remoteAddr, err := c.ReadMsgUDPAddrPort(*rb, ob) if err != nil { - return fmt.Errorf("unexpected read err: %w", err) + if n == 0 { + // err with zero read. Most likely becasue c was closed. + return fmt.Errorf("unexpected read err: %w", err) + } + // err with some read. Tempory err. + logger.Warn("read err", zap.Error(err)) + continue } q := new(dns.Msg) -- 2.34.8