fix cache
This commit is contained in:
parent
2a1e39b16e
commit
46ad37c81f
@ -29,20 +29,33 @@ lookup(#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}) ->
|
||||
TTLs = lists:foldl(fun(Term, Acc) ->
|
||||
case Term of
|
||||
#dns_rr{ttl = TTL} ->
|
||||
[TTL|Acc];
|
||||
_ ->
|
||||
Acc
|
||||
end
|
||||
end, [], Answers ++ Authority ++ Additional),
|
||||
case length(TTLs) > 0 of
|
||||
true ->
|
||||
TTL = lists:min(TTLs),
|
||||
ExpireAt = os:system_time(second) + TTL,
|
||||
|
||||
TTLs = [RR#dns_rr.ttl || RR <- Answers] ++ [RR#dns_rr.ttl || RR <- Authority] ++ [RR#dns_rr.ttl || RR <- Additional],
|
||||
TTL = lists:min(TTLs),
|
||||
ExpireAt = os:system_time(second) + TTL,
|
||||
lager:debug("min ttl is: ~p, expire_at: ~p", [TTL, ExpireAt]),
|
||||
|
||||
Key = {Qname, QType, QClass},
|
||||
Cache = #dns_cache{
|
||||
key = Key,
|
||||
answers = Answers,
|
||||
authority = Authority,
|
||||
additional = Additional,
|
||||
rcode = 0,
|
||||
flags = #{aa => AA},
|
||||
% unix time
|
||||
expire_at = ExpireAt
|
||||
},
|
||||
true = ets:insert(?TABLE, Cache).
|
||||
Key = {Qname, QType, QClass},
|
||||
Cache = #dns_cache{
|
||||
key = Key,
|
||||
answers = Answers,
|
||||
authority = Authority,
|
||||
additional = Additional,
|
||||
rcode = 0,
|
||||
flags = #{aa => AA},
|
||||
% unix time
|
||||
expire_at = ExpireAt
|
||||
},
|
||||
true = ets:insert(?TABLE, Cache);
|
||||
false ->
|
||||
ok
|
||||
end.
|
||||
Loading…
x
Reference in New Issue
Block a user