Skip to content

Proxy error hardening follow-up: bypass reason, remaining regression tests, loopback test listeners - #1084

Merged
justcoding121 merged 4 commits into
developfrom
test/proxy-error-hardening-gaps
Oct 8, 2026
Merged

justcoding121 merged 4 commits into
developfrom
test/proxy-error-hardening-gaps

Conversation

@justcoding121

Copy link
Copy Markdown
Owner

Summary

Closes the remaining gaps in the proxy-error-hardening plan after #1083.

  • Learned-bypass WARN now names the reason (origin TLS failure, HTTP 403/429 block, client rejected the proxy certificate, forced after a failed MITM handshake). Cold path only.
  • New Regression-2026-10-07 tests: transparent-endpoint parity for the client-reject breaker, a real connect-timeout log test (full-backlog loopback listener, asserts =1s and a 504), openssl verify of new roots and leaves (skips when OpenSSL is absent), and the stale-root cleanup removing only the listed thumbprints and never the current root (test seams on InterceptionService).
  • CI: the Regression-2026-10-07 gate also runs the Inspector tests.
  • Includes the separately authored commit 021f288a (test listeners bind to loopback so testhost does not trigger the Windows firewall prompt).

Tests

Unit, Inspector and Integration suites run locally. Only the known chain-building failures and the Http2ProtocolPolicyTests bridge tests fail; the latter fail identically on the base commit when the class runs alone.

Performance

No hot-path change in this PR beyond the loopback listener setup at start-up. rps-saturation (compare-bridges) dispatched on develop for the merged #1083 changes.

…pt the firewall

Wildcard UDP and TCP binds raise the Windows inbound prompt. Loopback QUIC listens on both ::1 and 127.0.0.1, and dual-listen retries long enough to leave a UDP exclusion range.
…arity, connect-timeout log, openssl verify and stale-root cleanup tests; gate Inspector regression tests
…oes not collide

A self-signed root that shares a subject with another certificate in the Windows store makes X509Chain.Build throw, so the HTTPS handshake fails before the client sees a certificate.
Start() only rolls back listeners it has already published, so a ::1 socket left assigned after the 127.0.0.1 bind throws stayed open and held the port.
@sonarqubecloud

sonarqubecloud Bot commented Oct 8, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
69.1% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@justcoding121
justcoding121 merged commit b0783a5 into develop Oct 8, 2026
19 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant