fix error
This commit is contained in:
parent
b02d335057
commit
76d403e9eb
@ -80,13 +80,12 @@ handle_cast({handle_ip_packet, Sock, SrcIp, SrcPort, IpPacket}, State) ->
|
||||
case resolver(UdpPayload) of
|
||||
{ok, 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);
|
||||
{error, Reason} ->
|
||||
lager:debug("[dns_handler] resolver get error: ~p", [Reason])
|
||||
lager:notice("[dns_handler] resolver get error: ~p", [Reason])
|
||||
end;
|
||||
false ->
|
||||
lager:debug("[dns_handler] resolver invalid protocol: ~p", [Protocol])
|
||||
lager:notice("[dns_handler] resolver invalid protocol: ~p", [Protocol])
|
||||
end,
|
||||
{stop, normal, State}.
|
||||
|
||||
@ -147,25 +146,25 @@ resolver0(Packet, QueryMsg = #dns_message{qc = 1, questions = [Question = #dns_q
|
||||
authority = [],
|
||||
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)};
|
||||
error ->
|
||||
%% 是否命中内部的域名后缀
|
||||
EmptyDnsResp = dns:encode_message(build_nxdomain_response(QueryMsg)),
|
||||
case sdlan_domain_regedit:maybe_domain(QName) of
|
||||
true ->
|
||||
lager:debug("[dns_handler] inbuilt qnanme: ~p, domain not exits", [QName]),
|
||||
lager:debug("[dns_handler] punchnet inbuilt qnanme: ~p, nxdomain", [QName]),
|
||||
{ok, EmptyDnsResp};
|
||||
false ->
|
||||
case dns_cache:lookup(Question) of
|
||||
{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),
|
||||
{ok, dns:encode_message(RespMsg)};
|
||||
miss ->
|
||||
lager:debug("[dns_handler] cache is miss"),
|
||||
Ref = make_ref(),
|
||||
forward_to_upstream(Ref, Packet, QueryMsg),
|
||||
lager:debug("[dns_handler] cache is miss, forward_to_upstream"),
|
||||
receive
|
||||
{dns_resolver_reply, Ref, Resp} ->
|
||||
case dns:decode_message(Resp) of
|
||||
|
||||
@ -98,13 +98,13 @@ handle_cast({forward, ReceiverPid, Ref, Request, #dns_message{id = TxId, questio
|
||||
{noreply, NewState :: #state{}, timeout() | hibernate} |
|
||||
{stop, Reason :: term(), NewState :: #state{}}).
|
||||
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}|_]} ->
|
||||
Key = {TxId, TargetIp, TargetPort, QName, QType, QClass},
|
||||
Records = ets:take(Tid, Key),
|
||||
resolver_reply(Records, Resp);
|
||||
_ ->
|
||||
ok
|
||||
resolver_reply(Records, Resp)
|
||||
catch error:_ ->
|
||||
ok
|
||||
end,
|
||||
{noreply, State};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user