diff options
| author | Shulhan <m.shulhan@gmail.com> | 2019-11-11 21:14:05 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2019-11-11 21:14:05 +0700 |
| commit | 5d631220ec790933b32cd36f9b50bef6dbef7a2b (patch) | |
| tree | 0aa07fa98a51ce5d3003b84f7efcc33f15215c0d /lib/dns/server.go | |
| parent | 1065ac7e98983080274be9b8e732a2697b2a7fd7 (diff) | |
| download | pakakeh.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.go | 20 |
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) |
