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

dnsimple / erldns / 30259461111
88%

Build:
DEFAULT BRANCH: main
Ran 27 Jul 2026 10:51AM UTC
Jobs 1
Files 49
Run time 1min
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

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%)

1709 of 1949 relevant lines covered (87.69%)

5628.93 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
90.32
23.66% src/erldns_config.erl
2
86.89
-1.05% src/listeners/erldns_listeners.erl
2
85.71
-2.92% src/listeners/tcp/erldns_proto_tcp_config.erl
Jobs
ID Job ID Ran Files Coverage
1 30259461111.1 27 Jul 2026 10:51AM UTC 49
87.69
GitHub Action Run
Source Files on build 30259461111
  • Tree
  • List 49
  • Changed 8
  • Source Changed 8
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30259461111
  • 85adc924 on github
  • Prev Build on main (#30254071350)
  • Delete
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