diff --git a/apps/dns_proxy/include/dns_proxy.hrl b/apps/dns_proxy/include/dns_proxy.hrl index a9282cc..6ff16e7 100644 --- a/apps/dns_proxy/include/dns_proxy.hrl +++ b/apps/dns_proxy/include/dns_proxy.hrl @@ -14,7 +14,7 @@ answers = [], authority = [], additional = [], - rcode :: integer(), + rc :: integer(), flags = #{}, % unix time expire_at :: integer() diff --git a/apps/dns_proxy/src/dns_cache.erl b/apps/dns_proxy/src/dns_cache.erl index a46f3b4..b0ba538 100644 --- a/apps/dns_proxy/src/dns_cache.erl +++ b/apps/dns_proxy/src/dns_cache.erl @@ -28,7 +28,7 @@ lookup(#dns_query{name = Qname, type = QType, class = QClass}) -> end. insert(#dns_query{name = Qname, type = QType, class = QClass}, - #dns_message{answers = Answers, authority = Authority, additional = Additional, aa = AA}) -> + #dns_message{answers = Answers, authority = Authority, additional = Additional, rc = RCode, aa = AA}) -> TTLs = lists:foldl(fun(Term, Acc) -> case Term of #dns_rr{ttl = TTL} -> @@ -50,7 +50,7 @@ insert(#dns_query{name = Qname, type = QType, class = QClass}, answers = Answers, authority = Authority, additional = Additional, - rcode = 0, + rc = RCode, flags = #{aa => AA}, % unix time expire_at = ExpireAt diff --git a/apps/dns_proxy/src/dns_handler.erl b/apps/dns_proxy/src/dns_handler.erl index f82a4f9..477ed74 100644 --- a/apps/dns_proxy/src/dns_handler.erl +++ b/apps/dns_proxy/src/dns_handler.erl @@ -163,7 +163,7 @@ forward_to_upstream(TargetIp, TargetPort, Request, Msg) -> dns_resolver:forward(Pid, ReceiverPid, TargetIp, TargetPort, Request, Msg) end). -build_response(Query, #dns_cache{expire_at = ExpireAt, answers = Answers, authority = Authority, additional = Additional}) -> +build_response(Query, #dns_cache{expire_at = ExpireAt, answers = Answers, authority = Authority, additional = Additional, rc = RCode, flags = #{aa := AA}}) -> Now = os:system_time(second), RemainingTTL = ExpireAt - Now, @@ -174,6 +174,8 @@ build_response(Query, #dns_cache{expire_at = ExpireAt, answers = Answers, author Query#dns_message{ qr = true, ra = true, + aa = AA, + rc = RCode, answers = Answers2, authority = Authority2, additional = Additional2