aboutsummaryrefslogtreecommitdiff
path: root/lib/dns/server.go
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2019-12-04 21:17:18 +0700
committerShulhan <m.shulhan@gmail.com>2019-12-04 23:20:57 +0700
commit4e6a5344f9e32a5c2ca886a33cdbe58bb7f7259a (patch)
tree86b61c0d20781a1b20d47886d02812ddc1af150a /lib/dns/server.go
parent694595845d27f03e7aca404caf476ebb4e365f2d (diff)
downloadpakakeh.go-4e6a5344f9e32a5c2ca886a33cdbe58bb7f7259a.tar.xz
dns: close the connection if receiving zero packet on serveTCPClient
Diffstat (limited to 'lib/dns/server.go')
-rw-r--r--lib/dns/server.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/dns/server.go b/lib/dns/server.go
index d23c606e..000dea1f 100644
--- a/lib/dns/server.go
+++ b/lib/dns/server.go
@@ -619,19 +619,19 @@ func (srv *Server) incForwarder() {
}
func (srv *Server) serveTCPClient(cl *TCPClient, kind connType) {
- var (
- err error
- )
for {
req := newRequest()
- _, err = cl.recv(req.message)
+ n, err := cl.recv(req.message)
if err != nil {
if err == io.EOF {
goto out
}
continue
}
+ if n == 0 || len(req.message.Packet) == 0 {
+ goto out
+ }
req.kind = kind
req.writer = cl
@@ -646,7 +646,7 @@ func (srv *Server) serveTCPClient(cl *TCPClient, kind connType) {
srv.requestq <- req
}
out:
- err = cl.conn.Close()
+ err := cl.conn.Close()
if err != nil {
log.Println("serveTCPClient: conn.Close:", err)
}