fix error

This commit is contained in:
anlicheng 2025-12-13 23:31:59 +08:00
parent b02d335057
commit 76d403e9eb
2 changed files with 10 additions and 11 deletions

View File

@ -80,13 +80,12 @@ handle_cast({handle_ip_packet, Sock, SrcIp, SrcPort, IpPacket}, State) ->
case resolver(UdpPayload) of case resolver(UdpPayload) of
{ok, DnsResp} -> {ok, DnsResp} ->
RespIpPacket = build_ip_packet(ReqDAddr, ReqSAddr, ReqDPort, ReqSPort, DnsResp), RespIpPacket = build_ip_packet(ReqDAddr, ReqSAddr, ReqDPort, ReqSPort, DnsResp),
lager:debug("[dns_handler] ip packet: ~p", [RespIpPacket]),
gen_udp:send(Sock, SrcIp, SrcPort, RespIpPacket); gen_udp:send(Sock, SrcIp, SrcPort, RespIpPacket);
{error, Reason} -> {error, Reason} ->
lager:debug("[dns_handler] resolver get error: ~p", [Reason]) lager:notice("[dns_handler] resolver get error: ~p", [Reason])
end; end;
false -> false ->
lager:debug("[dns_handler] resolver invalid protocol: ~p", [Protocol]) lager:notice("[dns_handler] resolver invalid protocol: ~p", [Protocol])
end, end,
{stop, normal, State}. {stop, normal, State}.
@ -147,25 +146,25 @@ resolver0(Packet, QueryMsg = #dns_message{qc = 1, questions = [Question = #dns_q
authority = [], authority = [],
additional = [] additional = []
}, },
lager:debug("[dns_handler] inbuilt qnanme: ~p, ip: ~p", [QName, Ip]), lager:debug("[dns_handler] punchnet inbuilt qnanme: ~p, ip: ~p", [QName, Ip]),
{ok, dns:encode_message(RespMsg)}; {ok, dns:encode_message(RespMsg)};
error -> error ->
%% %%
EmptyDnsResp = dns:encode_message(build_nxdomain_response(QueryMsg)), EmptyDnsResp = dns:encode_message(build_nxdomain_response(QueryMsg)),
case sdlan_domain_regedit:maybe_domain(QName) of case sdlan_domain_regedit:maybe_domain(QName) of
true -> true ->
lager:debug("[dns_handler] inbuilt qnanme: ~p, domain not exits", [QName]), lager:debug("[dns_handler] punchnet inbuilt qnanme: ~p, nxdomain", [QName]),
{ok, EmptyDnsResp}; {ok, EmptyDnsResp};
false -> false ->
case dns_cache:lookup(Question) of case dns_cache:lookup(Question) of
{hit, Cache} -> {hit, Cache} ->
lager:debug("[dns_handler] question: ~p, hit cache answers: ~p", [Question, Cache#dns_cache.answers]), lager:debug("[dns_handler] qname: ~p, hit cache answers: ~p", [QName, Cache#dns_cache.answers]),
RespMsg = build_response(QueryMsg, Cache), RespMsg = build_response(QueryMsg, Cache),
{ok, dns:encode_message(RespMsg)}; {ok, dns:encode_message(RespMsg)};
miss -> miss ->
lager:debug("[dns_handler] cache is miss"),
Ref = make_ref(), Ref = make_ref(),
forward_to_upstream(Ref, Packet, QueryMsg), forward_to_upstream(Ref, Packet, QueryMsg),
lager:debug("[dns_handler] cache is miss, forward_to_upstream"),
receive receive
{dns_resolver_reply, Ref, Resp} -> {dns_resolver_reply, Ref, Resp} ->
case dns:decode_message(Resp) of case dns:decode_message(Resp) of

View File

@ -98,12 +98,12 @@ handle_cast({forward, ReceiverPid, Ref, Request, #dns_message{id = TxId, questio
{noreply, NewState :: #state{}, timeout() | hibernate} | {noreply, NewState :: #state{}, timeout() | hibernate} |
{stop, Reason :: term(), NewState :: #state{}}). {stop, Reason :: term(), NewState :: #state{}}).
handle_info({udp, Socket, TargetIp, TargetPort, Resp}, State = #state{tid = Tid, socket = Socket}) -> handle_info({udp, Socket, TargetIp, TargetPort, Resp}, State = #state{tid = Tid, socket = Socket}) ->
case dns:decode_message(Resp) of try dns:decode_message(Resp) of
#dns_message{id = TxId, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]} -> #dns_message{id = TxId, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]} ->
Key = {TxId, TargetIp, TargetPort, QName, QType, QClass}, Key = {TxId, TargetIp, TargetPort, QName, QType, QClass},
Records = ets:take(Tid, Key), Records = ets:take(Tid, Key),
resolver_reply(Records, Resp); resolver_reply(Records, Resp)
_ -> catch error:_ ->
ok ok
end, end,
{noreply, State}; {noreply, State};