luci-app-mosdns/mosdns/patches/112-server-don-t-exit-udp-server-on-tempory-read-err.patch

32 lines
975 B
Diff

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