test(listener): six processes share one selfSigned certificate from cold
ShouldShareSelfSignedCertificateQUIC: six processes, forked before any thread or msquic exists and released together, each start two threads that create a selfSigned listener at once against an empty cache (XDG_CACHE_HOME pointed at a fresh directory) and with no openssl on PATH, and connect to both. All twelve listeners serve, and all six processes report the same certificate hash and a path under XDG_CACHE_HOME. The directory is 0700 and the key 0600, nothing temporary is left behind, a process started later serves the same certificate, and a mismatched key planted on disk, what the race used to leave, is replaced by the next process rather than loaded. Against the previous implementation every child fails (`openssl: command not found`), as do the location and permission checks. The parent starts no thread, so forking stays safe, and its watchdog is alarm(55); each child's is alarm(40). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
61d3e8c26a
commit
6b8b485e38
2 changed files with 255 additions and 0 deletions
|
|
@ -205,6 +205,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
cfg.AddTest("ShouldSendRecieveQUICStream").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldReportClosedQUICStream").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldReportListenerPortQUIC").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldShareSelfSignedCertificateQUIC").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldSurviveConnectionChurn").Dependencies({ &cfg });
|
||||
} else {
|
||||
// Only a --no-quic build can show that msquic stayed out.
|
||||
|
|
|
|||
Loading…
Reference in a new issue