Repository navigation
Hell 0.1.2
- Preserve the listening socket when the acceptor pool restarts, so supervision
can recover without taking down the server. - Clean up handlers whose acceptor exits before completing socket handoff,
preserving connection capacity across suspension and acceptor failures. - Apply
handshake_timeoutto TCP-to-TLS upgrades. Add an optional transport
upgrade/3callback while retaining support for existingupgrade/2transports. - Honor one-shot and persistent read timeout overrides after transport upgrades,
independently of GenServer mailbox timeouts. - Accept raw socket options without merging distinct native options.
- Enforce the documented binary mode for bare
:listand:binaryaliases as
well asmodetuples on TCP and TLS listeners.
Existing handler callbacks, startup/readiness messages and required transport
callbacks remain compatible. Stalled TLS upgrades now close after the configured
handshake deadline; handshake_timeout: :infinity restores unbounded waiting.
Callers relying on the unintended :list override now receive binary data.
Validation:
- Local full suite: 155 tests, 0 failures; compilation, formatting, strict Credo, Dialyzer and docs passed.
- Linux and macOS test matrix.
- Static checks.
- Package smoke exercises TCP, certificate-verified TLS and graceful shutdown.
CI evidence: the final matrix passed on attempt 2. Attempt 1 failed the unchanged 100ms heartbeat timing test in one macOS/OTP 26 job; that job passed on the bounded diagnostic rerun without code or test changes. Its spontaneous failure cause remains unresolved. The original failure and baseline comparison are retained.
Published artifact verification: Hex SHA256 and workflow archive match; all 24 packaged source files match the tag. Fresh Hex-only consumer passed 27 regression tests and 3 TCP/TLS/graceful-shutdown smoke tests. HexDocs is publicly available.