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