Packages
erldns
10.4.3
11.1.0
11.0.3
11.0.2
11.0.1
11.0.0
10.6.0
10.5.6
10.5.5
10.5.4
10.5.3
10.5.2
10.5.1
10.5.0
10.4.4
10.4.3
10.4.2
10.4.1
10.4.0
10.3.0
10.2.1
10.2.0
10.1.0
10.0.0
10.0.0-rc4
10.0.0-rc3
10.0.0-rc2
10.0.0-rc1
9.1.0
9.0.0
9.0.0-rc3
9.0.0-rc2
9.0.0-rc1
8.1.0
8.0.0
8.0.0-rc6
8.0.0-rc5
8.0.0-rc4
8.0.0-rc3
8.0.0-rc2
8.0.0-rc1
7.0.0
7.0.0-rc9
7.0.0-rc8
7.0.0-rc7
7.0.0-rc6
7.0.0-rc5
7.0.0-rc4
7.0.0-rc3
7.0.0-rc2
7.0.0-rc12
7.0.0-rc11
7.0.0-rc10
7.0.0-rc1
6.0.2
6.0.1
6.0.0
5.0.0
4.3.1
4.3.0
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.2
4.1.1
4.1.0
4.0.0
3.0.0
1.0.0
Erlang Authoritative DNS Server
Current section
Files
Jump to
Current section
Files
src/pipes/erldns_empty_verification.erl
-module(erldns_empty_verification).
-moduledoc """
Raise an event if the given message is empty or refused.
## Telemetry events
May emit the following telemetry events:
### `[erldns, pipeline, refused]`
Emitted when the empty verification pipe sees a resolved response with rcode REFUSED.
- **Measurements:** `#{count => 1}`
- **Metadata:** `#{}`
### `[erldns, pipeline, empty]`
Emitted when the empty verification pipe sees a resolved response with zero answer,
authority, and additional records.
- **Measurements:** `#{count => 1}`
- **Metadata:** `#{}`
""".
-include_lib("kernel/include/logger.hrl").
-include_lib("dns_erlang/include/dns.hrl").
-behaviour(erldns_pipeline).
-export([call/2]).
-doc "`c:erldns_pipeline:call/2` callback.".
-spec call(dns:message(), erldns_pipeline:opts()) -> dns:message().
call(#dns_message{rc = RC, anc = ANC, auc = AUC, adc = ADC} = Msg, #{resolved := true}) ->
case {RC, ANC, AUC, ADC} of
{?DNS_RCODE_REFUSED, _, _, _} ->
telemetry:execute([erldns, pipeline, refused], #{count => 1}, #{}),
Msg;
{_, 0, 0, 0} ->
?LOG_INFO(#{what => empty_response, message => Msg}, #{domain => [erldns, pipeline]}),
telemetry:execute([erldns, pipeline, empty], #{count => 1}, #{}),
Msg;
_ ->
Msg
end;
call(Msg, _) ->
Msg.