aboutsummaryrefslogtreecommitdiff
path: root/lib/dns/server.go
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2019-11-11 21:14:05 +0700
committerShulhan <m.shulhan@gmail.com>2019-11-11 21:14:05 +0700
commit5d631220ec790933b32cd36f9b50bef6dbef7a2b (patch)
tree0aa07fa98a51ce5d3003b84f7efcc33f15215c0d /lib/dns/server.go
parent1065ac7e98983080274be9b8e732a2697b2a7fd7 (diff)
downloadpakakeh.go-5d631220ec790933b32cd36f9b50bef6dbef7a2b.tar.xz
dns: minimize double looping on checking error at serveTCPClient
Diffstat (limited to 'lib/dns/server.go')
-rw-r--r--lib/dns/server.go20
1 files changed, 5 insertions, 15 deletions
diff --git a/lib/dns/server.go b/lib/dns/server.go
index cc70c7f6..474ce498 100644
--- a/lib/dns/server.go
+++ b/lib/dns/server.go
@@ -620,28 +620,18 @@ func (srv *Server) incForwarder() {
func (srv *Server) serveTCPClient(cl *TCPClient, kind connType) {
var (
- n int
err error
)
for {
req := newRequest()
- for {
- n, err = cl.recv(req.message)
- if err == nil {
- break
- }
+
+ _, err = cl.recv(req.message)
+ if err != nil {
if err == io.EOF {
- break
- }
- if n != 0 {
- log.Println("serveTCPClient:", err)
- req.message.Reset()
+ goto out
}
continue
}
- if err == io.EOF {
- break
- }
req.kind = kind
req.writer = cl
@@ -655,7 +645,7 @@ func (srv *Server) serveTCPClient(cl *TCPClient, kind connType) {
srv.requestq <- req
}
-
+out:
err = cl.conn.Close()
if err != nil {
log.Println("serveTCPClient: conn.Close:", err)