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

dnsimple / erldns / 20746037289
85%

Build:
DEFAULT BRANCH: main
Ran 06 Jan 2026 10:51AM UTC
Jobs 1
Files 46
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

06 Jan 2026 10:50AM UTC coverage: 84.332% (-0.03%) from 84.358%
20746037289

push

github

web-flow
Modern TCP stack (RFC7766) and TLS for free (RFC7858) (#300)

* Add port field to pipeline options

The pipeline needs to track the client port number for TCP/TLS
connections. This adds the port field to the pipeline options map
with a default value of undefined for backward compatibility.

* Extract TCP request handler into separate module

Create erldns_proto_tcp_request module to handle individual DNS
requests over TCP/TLS connections. This module is responsible for:
- Decoding the DNS message
- Calling the pipeline with proper options
- Encoding and sending the response
- Emitting telemetry events

The module supports both TCP and SSL socket types, abstracting
the socket operations through helper functions.

This extraction prepares for RFC7766 pipelining support where
multiple requests can be processed concurrently on a single
connection.

* Refactor TCP protocol for RFC7766 pipelining support

Refactor erldns_proto_tcp to implement RFC7766 recommendations for
TCP DNS connections. The main changes:

- Convert from proc_lib loop to gen_server for better state management
- Support concurrent request processing with configurable worker limits
- Implement packet buffering to handle fragmented TCP messages
- Add idle timeout to close inactive connections
- Abstract socket operations to support both TCP and SSL sockets
- Track active request workers and handle their lifecycle

The module now spawns erldns_proto_tcp_request workers for each
complete DNS message, allowing multiple requests to be processed
concurrently on a single connection. This improves throughput and
reduces connection overhead.

Configuration is now per-listener through the opts map rather than
global application environment variables.

* Add TLS transport support for DNS over TLS (DoT)

Add support for TLS transport type to enable DNS over TLS (DoT)
as specified in RFC 7858. Changes include:

- Add 'tls' transport type to listener configuration
- Rename 'both' transport to 'standard... (continued)

164 of 182 new or added lines in 5 files covered. (90.11%)

11 existing lines in 3 files now uncovered.

1577 of 1870 relevant lines covered (84.33%)

196.94 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
67.65
-26.64% src/listeners/erldns_proto_udp_acceptor.erl
5
88.79
-0.92% src/listeners/erldns_listeners.erl
12
87.5
7.75% src/listeners/erldns_proto_tcp.erl

Uncovered Existing Lines

Lines Coverage ∆ File
1
94.29
-2.86% src/listeners/erldns_sch_mon.erl
2
81.48
-7.41% src/pipes/erldns_edns_ede.erl
8
67.65
-26.64% src/listeners/erldns_proto_udp_acceptor.erl
Jobs
ID Job ID Ran Files Coverage
1 20746037289.1 06 Jan 2026 10:51AM UTC 46
84.33
GitHub Action Run
Source Files on build 20746037289
  • Tree
  • List 46
  • Changed 11
  • Source Changed 8
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #20746037289
  • bccd47ab on github
  • Prev Build on main (#20745797227)
  • Next Build on main (#20781487450)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc