This commit is contained in:
anlicheng 2025-12-04 13:12:20 +08:00
parent f0b84cdf65
commit 7086f23a69
3 changed files with 6 additions and 4 deletions

View File

@ -14,7 +14,7 @@
answers = [], answers = [],
authority = [], authority = [],
additional = [], additional = [],
rcode :: integer(), rc :: integer(),
flags = #{}, flags = #{},
% unix time % unix time
expire_at :: integer() expire_at :: integer()

View File

@ -28,7 +28,7 @@ lookup(#dns_query{name = Qname, type = QType, class = QClass}) ->
end. end.
insert(#dns_query{name = Qname, type = QType, class = QClass}, 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) -> TTLs = lists:foldl(fun(Term, Acc) ->
case Term of case Term of
#dns_rr{ttl = TTL} -> #dns_rr{ttl = TTL} ->
@ -50,7 +50,7 @@ insert(#dns_query{name = Qname, type = QType, class = QClass},
answers = Answers, answers = Answers,
authority = Authority, authority = Authority,
additional = Additional, additional = Additional,
rcode = 0, rc = RCode,
flags = #{aa => AA}, flags = #{aa => AA},
% unix time % unix time
expire_at = ExpireAt expire_at = ExpireAt

View File

@ -163,7 +163,7 @@ forward_to_upstream(TargetIp, TargetPort, Request, Msg) ->
dns_resolver:forward(Pid, ReceiverPid, TargetIp, TargetPort, Request, Msg) dns_resolver:forward(Pid, ReceiverPid, TargetIp, TargetPort, Request, Msg)
end). 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), Now = os:system_time(second),
RemainingTTL = ExpireAt - Now, RemainingTTL = ExpireAt - Now,
@ -174,6 +174,8 @@ build_response(Query, #dns_cache{expire_at = ExpireAt, answers = Answers, author
Query#dns_message{ Query#dns_message{
qr = true, qr = true,
ra = true, ra = true,
aa = AA,
rc = RCode,
answers = Answers2, answers = Answers2,
authority = Authority2, authority = Authority2,
additional = Additional2 additional = Additional2