This commit is contained in:
anlicheng 2025-12-04 14:42:54 +08:00
parent 5d41b45d6f
commit 7c3474afab

View File

@ -83,6 +83,7 @@ handle_cast({forward, ReceiverPid, Ref, Request, #dns_message{id = TxId, questio
Keys = lists:foldl(fun({DnsIp, DnsPort}, Acc) ->
ok = gen_udp:send(Socket, DnsIp, DnsPort, Request),
Key = {TxId, DnsIp, DnsPort, QName, QType, QClass},
lager:debug("[dns_resolver] key: ~p, send to: ~p, packet: ~p", [Key, {DnsIp, DnsPort}, Request]),
true = ets:insert(Tid, {Key, Ref, ReceiverPid}),
[Key|Acc]
end, [], DnsServers),
@ -99,8 +100,9 @@ handle_cast({forward, ReceiverPid, Ref, Request, #dns_message{id = TxId, questio
handle_info({udp, Socket, TargetIp, TargetPort, Resp}, State = #state{tid = Tid, socket = Socket}) ->
case dns:decode_message(Resp) of
#dns_message{id = TxId, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]} ->
Key = {TxId, TargetIp, TargetPort, QName, QName, QType, QClass},
resolver_reply(ets:take(Tid, Key), Resp);
Key = {TxId, TargetIp, TargetPort, QName, QType, QClass},
Records = ets:take(Tid, Key),
resolver_reply(Records, Resp);
_ ->
ok
end,