You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8ddc264
Browse filesBrowse the repository at this point in the historyBrowse files
TASK-195: Serve native HTTP/2 with independent stream execution
Compose negotiated TLS H2 with bounded wire/stream affinities, hierarchical budgets, exact body credit, common routing and policy, deadlines, RFC8441, and native staged drain. Repair the shared H1 disconnect publication race exposed by parity verification.
Verify 76 TLS-on and 20 TLS-off suites in normal, ASan/UBSan and TSan; all shared/static managed/external public matrices with both pinned clients; installed package parity; 145 required h2spec cases; local headers, docs, linkage, lint and distribution checks. Preserve causal failures and exact evidence in TASK-195-receipt.json and the task-local handoff.
Copy file name to clipboardExpand all lines: docs/native-tls-build.md
+29-4Lines changed: 29 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,8 +27,9 @@ cross builds must run the smoke on the target in CI.
27
27
`<httpserver/features.hpp>` exposes the same compiled `query_features()` declaration
28
28
in both builds, without backend headers or configuration macros. Availability of
29
29
the provider is distinct from availability of TCP TLS, HTTP/2, and HTTP/3. TCP TLS is available in TLS-on builds for certificate, initial mTLS and eligible
30
-
external-PSK HTTP/1.0 and HTTP/1.1 in both managed and external modes. HTTP/2 and HTTP/3 remain
31
-
unavailable until their owning tasks implement public listeners. `listen()`
30
+
external-PSK HTTP/1.0 and HTTP/1.1 in both managed and external modes. Certificate
31
+
and initial mTLS profiles also serve enabled HTTP/2 through TLS ALPN `h2`.
32
+
HTTP/3 public listeners remain unavailable. `listen()`
32
33
rejects unsupported protocol/profile requests before binding;
33
34
`server_options::validate()` remains semantic.
34
35
@@ -139,8 +140,10 @@ through retiring I/O completions. No global credential store exists.
139
140
Host names use exact canonical DNS matching, with case folding and a final dot
140
141
removed. Unknown or absent SNI selects `default_host` (zero by default). Each
141
142
listener has its own explicit store; sharing is intentional only when the same
142
-
store is assigned. ALPN may contain `http/1.1` or be empty for ordinary HTTP/1
143
-
fallback. A listener with HTTP/1.1 disabled must initially use empty ALPN. Later
143
+
store is assigned. Certificate and initial mTLS ALPN may contain `h2`,
144
+
`http/1.1`, or both; empty ALPN selects ordinary HTTP/1 fallback. An advertised
145
+
protocol must be enabled in every listener bound to the credential store. PSK
146
+
profiles retain HTTP/1-only ALPN and reject `h2`. Later
144
147
publication cannot negotiate a disabled ALPN; wire requests for a disabled H1
145
148
version are rejected before routing. `exchange::tls()` and request hook contexts
0 commit comments