diff --git a/dns/client.go b/dns/client.go index 33dce1c9..862d935d 100644 --- a/dns/client.go +++ b/dns/client.go @@ -99,7 +99,7 @@ func (r *Resolver) exchange(servers []*nameserver, m *D.Msg) (msg *D.Msg, err er if err != nil || msg.Rcode != D.RcodeSuccess { return } - in <- &result{Msg: msg, Error: err} + in <- msg }(server) } @@ -114,8 +114,7 @@ func (r *Resolver) exchange(servers []*nameserver, m *D.Msg) (msg *D.Msg, err er return nil, errors.New("All DNS requests failed") } - resp := elm.(*result) - msg, err = resp.Msg, resp.Error + msg = elm.(*D.Msg) return } diff --git a/dns/server.go b/dns/server.go index 7e410355..59af5289 100644 --- a/dns/server.go +++ b/dns/server.go @@ -57,10 +57,9 @@ func (s *Server) handleFakeIP(r *D.Msg) (msg *D.Msg, err error) { q := r.Question[0] - cache, _ := s.r.cache.GetWithExpire("fakeip:" + q.String()) + cache := s.r.cache.Get("fakeip:" + q.String()) if cache != nil { msg = cache.(*D.Msg).Copy() - setMsgTTL(msg, 1) return } @@ -72,6 +71,8 @@ func (s *Server) handleFakeIP(r *D.Msg) (msg *D.Msg, err error) { putMsgToCache(s.r.cache, "fakeip:"+q.String(), msg) putMsgToCache(s.r.cache, ip.String(), msg) + + // putMsgToCache depend on msg ttl to set cache expired time, then set msg ref ttl to 1 setMsgTTL(msg, 1) }()