This commit is contained in:
anlicheng 2026-04-13 15:05:13 +08:00
parent 98f2078dea
commit e6163c06cc

View File

@ -53,7 +53,7 @@ resolve(IpPacket) when is_binary(IpPacket) ->
resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]}) -> resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]}) ->
%% %%
case sdlan_hostname_regedit:lookup(QName) of case sdlan_hostname_regedit:lookup(QName) of
{ok, Ip} -> {ok, Ip} when QType =:= ?DNS_TYPE_A, QClass =:= ?DNS_CLASS_IN ->
Answer = #dns_rr { Answer = #dns_rr {
name = QName, name = QName,
type = QType, type = QType,
@ -75,6 +75,8 @@ resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, t
}, },
logger:debug("[dns_resolver] punchnet inbuilt qnanme: ~p, ip: ~p", [QName, Ip]), logger:debug("[dns_resolver] punchnet inbuilt qnanme: ~p, ip: ~p", [QName, Ip]),
{ok, dns:encode_message(RespMsg)}; {ok, dns:encode_message(RespMsg)};
{ok, _Ip} ->
{ok, dns:encode_message(build_empty_response(QueryMsg))};
error -> error ->
case sdlan_domain_regedit:maybe_domain(QName) of case sdlan_domain_regedit:maybe_domain(QName) of
true -> true ->
@ -87,6 +89,21 @@ resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, t
resolve0(Error) -> resolve0(Error) ->
{error, Error}. {error, Error}.
-spec build_empty_response(QueryMsg :: #dns_message{}) -> EmptyResp :: #dns_message{}.
build_empty_response(QueryMsg) ->
QueryMsg#dns_message{
qr = true,
aa = true,
ra = true,
rc = ?DNS_RCODE_NOERROR,
anc = 0,
auc = 0,
adc = 0,
answers = [],
authority = [],
additional = []
}.
-spec build_nxdomain_response(QueryMsg :: #dns_message{}) -> EmptyResp :: #dns_message{}. -spec build_nxdomain_response(QueryMsg :: #dns_message{}) -> EmptyResp :: #dns_message{}.
build_nxdomain_response(QueryMsg) -> build_nxdomain_response(QueryMsg) ->
QueryMsg#dns_message{ QueryMsg#dns_message{