Crafter.Network/implementations
Repository files (latest commit first)
Filename Latest commit message Latest commit date
catbot b7fe39871b fix(tls): stop a peer that closed first from killing the process
OpenSSL's socket BIO writes with write(2) rather than send(2), so unlike
PlainStream it cannot pass MSG_NOSIGNAL. Writing to a peer that is gone
therefore raised SIGPIPE, and with the default disposition that takes the
whole process down.

This is not an edge case. It fires on any teardown where the far side
closed first, because SSL_shutdown still tries to put a close_notify on
the wire — which is exactly what ShouldSendRecieveHTTPS1 does when it
drops a client whose certificate check failed. The test died on SIGPIPE
with every assertion passing.

Installing a process-wide SIG_IGN would fix it by changing how the
caller's own writes report failure, which a library has no business
doing. SIGPIPE from write(2) is delivered to the writing thread, so block
it for that thread across each OpenSSL call instead and drain any pending
instance before unblocking. A caller who already blocks SIGPIPE is left
untouched — a pending signal there may be theirs to consume.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 20:18:51 +00:00
..
Crafter.Network-ClientHTTP-Browser.cpp SPDX license 2026-07-22 17:55:45 +02:00
Crafter.Network-ClientHTTP.cpp SPDX license 2026-07-22 17:55:45 +02:00
Crafter.Network-ClientHTTP1.cpp feat(tls): add a libssl TLS transport and an https:// HTTP/1.1 stack 2026-07-28 20:13:30 +00:00
Crafter.Network-ClientQUIC-Browser.cpp SPDX license 2026-07-22 17:55:45 +02:00
Crafter.Network-ClientQUIC.cpp SPDX license 2026-07-22 17:55:45 +02:00
Crafter.Network-ClientTCP.cpp fix(tcp): resolve, connect, bind and send failures were silent or wrong 2026-07-27 00:44:56 +00:00
Crafter.Network-ListenerHTTP.cpp feat(http): give ListenerHTTP the same fallback and query-strip routing 2026-07-28 19:42:06 +00:00
Crafter.Network-ListenerHTTP1.cpp test(https): cover the TLS transport from three angles 2026-07-28 20:17:07 +00:00
Crafter.Network-ListenerQUIC.cpp SPDX license 2026-07-22 17:55:45 +02:00
Crafter.Network-ListenerTCP.cpp fix(tcp): resolve, connect, bind and send failures were silent or wrong 2026-07-27 00:44:56 +00:00
Crafter.Network-Stream.cpp feat(tls): add a libssl TLS transport and an https:// HTTP/1.1 stack 2026-07-28 20:13:30 +00:00
Crafter.Network-TLS.cpp fix(tls): stop a peer that closed first from killing the process 2026-07-28 20:18:51 +00:00
Crafter.Network-WebTransport.cpp SPDX license 2026-07-22 17:55:45 +02:00