• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dnsimple / dns_erlang
92%

Build:
DEFAULT BRANCH: main
Repo Added 11 Mar 2025 07:32AM UTC
Token 72qZZkJyJVy2Od1Yh0lQQ62DENnvMSpMr regen
Build 338 Last
Files 12
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • 4.4.0
  • add_bin_int_conversions
  • bugfix/detect-truncated-message
  • bugfix/empty_strings
  • bugfix/escape-backslashes-too
  • chore/agents
  • chore/dnssec_refactors_and_cleanups
  • chore/generate_json_docs
  • chore/minimum_perf_improvement_for_common_case
  • chore/split_zonefile_parser
  • chores
  • ci
  • cleanup_chores
  • cleanups
  • clear_priv
  • common_tests
  • dependabot/github_actions/actions-patch-minor-7a5a078ad4
  • dependabot/github_actions/actions-patch-minor-fb637e3736
  • dependabot/github_actions/actions/cache-5
  • dependabot/github_actions/actions/cache-6.1.0
  • dependabot/github_actions/actions/checkout-5
  • dependabot/github_actions/actions/checkout-6
  • dependabot/github_actions/actions/checkout-7
  • dependabot/github_actions/peter-evans/create-pull-request-8
  • dependencies
  • dnssec
  • dnssec_updates
  • doc_updates
  • docs/rfc-versions
  • documentation
  • edns0_truncated_record
  • feat/domain_names
  • feat/ed25519_ed448
  • feat/json
  • feat/more_record_types
  • feat/new_svcb_params
  • feat/strict_query_decoding
  • feat/svcb_https
  • feat/zonefiles
  • fix-decode-query-notify-invalid-counts
  • fix/additional-section-name-compression
  • fix/decode-malformed-cookie-formerr
  • fix/json_and_svc_params
  • fix/nsec-bitmap-window-boundary
  • fix/optrr-drop-near-max-size
  • fix/optrr-position-rfc6891
  • fix/optrr-size
  • fix/optrr-uniqueness-and-rsa
  • fix/rfc1995-ixfr-header-guard
  • fix/rfc2136-update-decoding
  • fix/strict_ip_parsing
  • fix/svcb_null
  • fix/truncate_question
  • fix/wire-fidelity
  • fix/wire-format-compliance-audit
  • fix/zonefile_parser
  • fix_edns0_truncate_questions
  • fix_get_max_size
  • fix_truncated_optrr_records
  • general_care
  • generic_cleanups
  • linter
  • main
  • minor_optimisations
  • module_documentation
  • nxname
  • optimize-dns-decode
  • optimize-domain-from-wire
  • optimize-domain-to-wire
  • perf/append_optimisations
  • perf/encode-single-accumulator
  • perf/optimise_to_lower
  • perf/to_lower-to_upper
  • refactoring
  • release
  • release-4.3
  • rfc8914-ede
  • rfc_7873_support_cookies
  • string_manipulations
  • strong_typing
  • support-ecdsa
  • test_long_txt_sections
  • tlsa
  • tmp/encode_zonefile
  • type_info
  • updates
  • upgrade_plugins
  • zone_parser_improvements

27 Jul 2026 10:41AM UTC coverage: 91.914% (+0.01%) from 91.904%
30259340523

push

github

NelsonVides
Decline zone transfers in decode_query/1 (rfc1995, rfc5936)

Two faults, one shape. The opcode 0 header guard from #101 required
NSCOUNT = 0, but rfc1995 §3 has an IXFR client state the serial it holds
by putting that SOA in the authority section, so every conformant IXFR
query was rejected as formerr; erldns drops what it cannot decode without
replying, so a secondary retried on a timer and never learned why. The
exemption was in #101's own survey, under miekg/dns: "Allows at most 1 RR
in Answer/Authority sections (for NOTIFY/IXFR)". NOTIFY got its clause.

Admitting the record is not enough, because nothing downstream knows what
a transfer is. Driving the erldns pipeline with a decoded IXFR gives
NOERROR, aa=true, an empty answer and the zone's SOA in authority: no
record carries type 251, so it resolves to NODATA like any other qtype
that matches nothing. That is worse than the formerr it replaces. rfc1995
§4 gives a lone SOA and nothing else the meaning "your copy is current",
and this reply is one SOA away from that, so a lenient secondary can read
it as confirmation that it is in sync with a zone it has never once
transferred. Silence at least fails loudly.

So decline them here, as the opcodes above already are. rfc1035 §4.1.1
defines NOTIMP as "the name server does not support the requested kind of
query", which is the literal truth: a transfer is answered as a stream of
messages over a held connection, and a caller that gets one decoded
message back cannot produce that. A server implementing transfers decodes
with decode_message/1 and runs its own loop, as it must regardless.

The check reads the decoded message rather than gating ahead of it. The
qtype lives in the question section, so testing it before decode_body/3
would parse the questions twice on every query to catch a rare one; two
clauses on the way out cost the same and only on the way out. AXFR needs
no authority record and never tripped the guard, but resolved to the same
NODATA, s... (continued)

2978 of 3240 relevant lines covered (91.91%)

11669.93 hits per line

Relevant lines Covered
Build:
Build:
3240 RELEVANT LINES 2978 COVERED LINES
11669.93 HITS PER LINE
Source Files on main
  • Tree
  • List 12
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
30259340523 main Decline zone transfers in decode_query/1 (rfc1995, rfc5936) Two faults, one shape. The opcode 0 header guard from #101 required NSCOUNT = 0, but rfc1995 §3 has an IXFR client state the serial it holds by putting that SOA in the authority section,... push 27 Jul 2026 10:47AM UTC NelsonVides github
91.91
30259042281 fix/rfc1995-ixfr-header-guard Merge 29bf3a84b into a17c8dc0d Pull #145 27 Jul 2026 10:42AM UTC web-flow github
91.91
30253944014 main Decode rfc2136 UPDATE, and refuse to serve it with NOTIMP a4f90e2 made empty RDATA an error for every type in requires_rrdata/1, on the grounds that RFC 1035 §3.2.1 leaves no room for a known type to carry zero octets. rfc2136 is the exception: §... push 27 Jul 2026 09:27AM UTC NelsonVides github
91.9
30253826071 fix/rfc2136-update-decoding Merge a17c8dc0d into 51bd563f7 Pull #144 27 Jul 2026 09:25AM UTC web-flow github
91.9
30161651760 main Keep non-canonically encoded RSA public keys opaque (RFC 3110 §2) RFC 3110 §2 lays an RSA key out as an exponent length -- one octet, or zero followed by two -- then the exponent and the modulus. Decoding turned those into the integer pair [E, M]... push 25 Jul 2026 02:27PM UTC NelsonVides github
91.88
30161550392 fix/optrr-uniqueness-and-rsa Merge 51bd563f7 into 831208fe4 Pull #143 25 Jul 2026 02:24PM UTC web-flow github
91.88
30160754950 main Add wire-format properties for RDATA, and fix what they found Nothing checked that RDATA survives a trip through the wire codec: prop_wire_roundtrip in dns_domain_SUITE covers only domain names, and the properties in dns_zone_prop cover the prese... push 25 Jul 2026 01:59PM UTC NelsonVides github
91.22
30160713294 fix/wire-fidelity Merge 831208fe4 into 9f5e78f7d Pull #142 25 Jul 2026 01:58PM UTC web-flow github
91.22
30160583170 fix/wire-fidelity Merge e3c77ba69 into 9f5e78f7d Pull #142 25 Jul 2026 01:54PM UTC web-flow github
91.26
30157417737 main Honour an OPT RR anywhere in the additional section (RFC 6891 §6.1.1) RFC 6891 §6.1.1: the OPT RR "MAY be placed anywhere within the additional data section". Four places in the encoder matched it only at the head of that list -- get_max_size/2, ... push 25 Jul 2026 12:07PM UTC NelsonVides github
90.99
See All Builds (336)

Badge your Repo: dns_erlang

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc