From 849165ef02bb30b3de86b3830be8701f0bae440c Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Thu, 28 Jan 2016 09:33:28 -0500 Subject: [PATCH] handle requests in a goroutine --- server.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server.go b/server.go index 231dcf0..9fc63f1 100644 --- a/server.go +++ b/server.go @@ -43,6 +43,16 @@ func (s *Server) ListenAndServe() error { // ServeDNS will be called for every DNS request to this server. // It will attempt to provide answers to all questions from the configured zone. func (s *Server) ServeDNS(w dns.ResponseWriter, request *dns.Msg) { + // Call `Hijack` since we will handle closing `dns.ResponseWriter` ourselves + w.Hijack() + // Handle the request + go s.handle(w, request) +} + +func (s *Server) handle(w dns.ResponseWriter, request *dns.Msg) { + // Always close the writer + defer w.Close() + // Capture starting time for measuring message response time var start time.Time start = time.Now()