diff options
| author | Shulhan <m.shulhan@gmail.com> | 2019-12-04 21:17:18 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2019-12-04 23:20:57 +0700 |
| commit | 4e6a5344f9e32a5c2ca886a33cdbe58bb7f7259a (patch) | |
| tree | 86b61c0d20781a1b20d47886d02812ddc1af150a /lib/dns/server.go | |
| parent | 694595845d27f03e7aca404caf476ebb4e365f2d (diff) | |
| download | pakakeh.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.go | 10 |
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) } |
