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

dnsimple / erldns
88%

Build:
DEFAULT BRANCH: main
Repo Added 11 Apr 2025 10:18AM UTC
Token wBQTQ115twBLBos5bdaEOHuoBFllVtRjX regen
Build 543 Last
Files 49
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
  • automatic-dependencies-update
  • autostart-listeners
  • backpressure
  • basic_ent_implementation
  • bugfix/cache_put_rrset_accepts_zone_record
  • bugfix/case_clause_not_normalised
  • bugfix/rrsig_timestamp
  • bugfix/rrsig_ttls
  • bugfix/udp_payload_size
  • chore/eunit_to_ct
  • chore/improvements
  • chore/minor
  • chore/release
  • chore/remove_rfc_compliant_ent_flag
  • chore/reorganise_listeners_helpers
  • chore/root_hints
  • chore/simplify_code
  • chore/simplify_restart_query
  • chore/upgrade_dependencies
  • chore/zone_cache_performance_and_correctness
  • chores
  • ci
  • cleanup_extra_modules
  • cleanups
  • 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/nosborn/github-action-markdown-cli-3.5.0
  • dependencies
  • deps/upgrade_dns_erlang
  • design
  • dnssec-issue
  • dnstest
  • docs-admin
  • docs/contributing
  • documentation
  • edns0_truncated_record
  • empty-rrsig
  • ensure_counters_are_labels
  • ent-rfc
  • erldns_handler
  • erldns_txt_removal
  • event_handler
  • expand_linter
  • feat/admin_api
  • feat/custom-admin-api-middlewares
  • feat/dns_erlang_encoder_decoders
  • feat/ed25519_ed448
  • feat/modern_tcp
  • feat/new_record_types
  • feat/pipeline_continuations
  • feat/pipeline_improvements
  • feat/svcb_https
  • feat/types_and_linters
  • feat/udp_acceptors_congestion
  • feat/udp_worker_codel
  • feat/zone_cache_cleanup_and_telemetry
  • feat/zonefiles
  • feature/cds-cdnskey-ksk-rrsig
  • fix-zonecut-cname-chain-truncation
  • fix/infinite_delegation_loop
  • fix/map_nsec_rr_types
  • fix/optrr-anywhere-in-additional
  • fix/os-socket-portability
  • fix/restart_delegated_query
  • fix/support_keyNNNN_in_svcb_https
  • fix/svcb_https_encoding_dots
  • fix/svcb_none
  • fix/tcp_gen_server_loop
  • fix/zone_load_on_init
  • fix/zonefile_load
  • fix_flaky_test
  • fix_min_packet_size
  • fixes
  • handlers_improvements
  • improvements
  • linting
  • log-udp-decode-crash-payload
  • logger
  • logger_domains
  • mailbox_lengths
  • main
  • metrics
  • network/tcp
  • network_performance
  • nsec/custom-handlers
  • nsec/implementation
  • nsec/preparations
  • packet_cache_rework
  • perf/calibrate_min_heap_size
  • perf/minor_optimisations
  • pipeline_exception_telemetry
  • pipelines
  • pipelines_question_filter
  • prepare-v9
  • prepare-v9-rc1
  • prepare-v9-rc2
  • prepare_v7
  • refactoring/dns_erlang
  • release
  • release-8.0
  • release/v10
  • remove-erldns-handler
  • remove-spf-support
  • resolver_split
  • rfc8914-ede
  • singletons
  • soa-cache
  • support-ecdsa
  • task/bump-dnstest
  • test/zonecut-cname-chain-edge-cases
  • throttle_table_rework
  • throws_as_errors_mangling
  • tlsa
  • tmp
  • update_dns_erlang
  • upgrade_deps
  • upgrade_plugins_and_deps
  • v8-rc6
  • zone/cache
  • zone/cleanups
  • zone/codec
  • zone/loader
  • zones

27 Jul 2026 10:48AM UTC coverage: 87.686% (-0.004%) from 87.69%
30259461111

push

github

web-flow
Portable listeners (#358)

* test: reserve ports instead of hardcoding them

Ports 8053, 8054 and 8083 were fixed constants, so two suites bound the same
port and any of them could collide with whatever else is on the host, or with
the ranges Windows reserves for dynamic allocation.

Listeners that no test sends traffic to now use port 0. The rest need a known
port on both UDP and TCP, which port 0 cannot give since each protocol would
resolve its own, so app_helper:reserve_port/0 picks a free one instead.

* test: read a UDP listener's socket through an accessor

Finding the port of a UDP listener meant reaching into a gen_server's state
and pulling the socket out by tuple position, which breaks silently the moment
a field is added or reordered.

The acceptor answers get_socket/1 instead, so callers ask the module rather
than knowing its call protocol. Both it and the module are -doc false, so
nothing is added to the public API, and the lookup loses three levels of
nesting that only existed to turn a bad match into a named error.

* feat: support Windows, FreeBSD, OpenBSD and NetBSD

erldns did not boot on Windows (#357), and nothing noticed because nothing
had ever run there. Three socket options were at fault, each in a different
way, and finding them needed CI on the platforms themselves.

`ipv6_v6only` cannot be unset on Windows or OpenBSD, so a wildcard listener
never bound: it now binds IPv4 there and warns, naming `::` as the way to
serve IPv6. Windows cannot bind a second socket to a port already in use, so
listeners there run one acceptor and one listen socket whatever
`parallel_factor` says. `reuseport_lb` is FreeBSD's own option and is sent
only there; Linux tolerated it only because it maps onto `reuseport`.

FreeBSD needed more than options. `SO_REUSEPORT_LB` does not balance IPv4
arriving v4-mapped on a dual-stack socket, so every query reached one socket
and a native IPv4 socket received four times as much. A wildcard listener
there no... (continued)

53 of 59 new or added lines in 7 files covered. (89.83%)

40 existing lines in 5 files now uncovered.

1709 of 1949 relevant lines covered (87.69%)

5628.93 hits per line

Relevant lines Covered
Build:
Build:
1949 RELEVANT LINES 1709 COVERED LINES
5628.93 HITS PER LINE
Source Files on main
  • Tree
  • List 49
  • Changed 8
  • Source Changed 8
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
30259461111 main Portable listeners (#358) * test: reserve ports instead of hardcoding them Ports 8053, 8054 and 8083 were fixed constants, so two suites bound the same port and any of them could collide with whatever else is on the host, or with the ranges Wind... push 27 Jul 2026 10:51AM UTC web-flow github
87.69
30254071350 main Update dns_erlang push 27 Jul 2026 09:30AM UTC NelsonVides github
87.69
30162069703 fix/os-socket-portability Merge 22d41df95 into 6ea677386 Pull #358 25 Jul 2026 02:42PM UTC web-flow github
87.69
30162016514 main Find the OPT RR anywhere in the additional section (RFC 6891 §6.1.1) (#359) * Upgrade dns_erlang * Find the OPT RR anywhere in the additional section (RFC 6891 §6.1.1) RFC 6891 §6.1.1: an OPT RR "MAY be placed anywhere within the additional dat... push 25 Jul 2026 02:40PM UTC web-flow github
87.69
30161936802 fix/optrr-anywhere-in-additional Merge 42f5ed072 into b7524319d Pull #359 25 Jul 2026 02:37PM UTC web-flow github
87.72
30161827488 fix/optrr-anywhere-in-additional Merge 1a80dfe22 into b7524319d Pull #359 25 Jul 2026 02:34PM UTC web-flow github
87.69
29687713207 fix/os-socket-portability Merge 1c8836143 into b7524319d Pull #358 19 Jul 2026 12:50PM UTC web-flow github
87.54
29687350799 fix/os-socket-portability Merge 3f92e90d1 into b7524319d Pull #358 19 Jul 2026 12:39PM UTC web-flow github
87.7
29687036769 fix/os-socket-portability Merge 18bb849e0 into b7524319d Pull #358 19 Jul 2026 12:29PM UTC web-flow github
87.61
29686266451 fix/os-socket-portability Merge ba98615ae into b7524319d Pull #358 19 Jul 2026 12:04PM UTC web-flow github
87.7
See All Builds (536)

Badge your Repo: erldns

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