Skip to content

inbound: Split HTTP detection stack from TLS#664

Merged
olix0r merged 5 commits intomainfrom
ver/split-inbound-accept
Sep 18, 2020
Merged

inbound: Split HTTP detection stack from TLS#664
olix0r merged 5 commits intomainfrom
ver/split-inbound-accept

Conversation

@olix0r
Copy link
Member

@olix0r olix0r commented Sep 18, 2020

The DetectTls module only operates on TcpStreams (because it uses the
TcpStream::peek api); but this complicates writing tests on the HTTP
stack to validate changes like #660.

This change decouples these accept stacks so that they can be tested
more easily.

The inbound and outbound configs bind an accept stack to the listener
via serve::serve; but this makes it infeasible to test the accept stacks
without actually binding a socket.

This change moves the server binding into the main app initialization so
that the inbound and outbound stacks can be built without a listener.
The DetectTls module only operates on `TcpStream`s (because it uses the
`TcpStream::peek` api); but this complicates writing tests on the HTTP
stack to validate changes like #660.

This change decouples these accept stacks so that they can be tested
more easily.
@olix0r
Copy link
Member Author

olix0r commented Sep 18, 2020

Depends on #663; needs to merge #660

@hawkw
Copy link
Contributor

hawkw commented Sep 18, 2020

FWIW, #658 also changes some stuff to support using mock IO types in place of TcpStream, is this related?

Base automatically changed from ver/split-serve to main September 18, 2020 20:48
@olix0r olix0r marked this pull request as ready for review September 18, 2020 20:58
@olix0r olix0r requested a review from a team September 18, 2020 20:58
@olix0r olix0r merged commit d5c10bd into main Sep 18, 2020
@olix0r olix0r deleted the ver/split-inbound-accept branch September 18, 2020 22:20
olix0r added a commit to linkerd/linkerd2 that referenced this pull request Sep 18, 2020
This release fixes a recent regression in multicluster gateway
configurations that would forbid inbound gateway traffic. It also fixes
URI normalization for orig-proto-upgrade requests that do not include a
`Host` header.

---

* http: Simplify stacks and target types (linkerd/linkerd2-proxy#656)
* Make SkipDetect more generic as stack::MakeSwitch (linkerd/linkerd2-proxy#657)
* introduce tests for isolated services (linkerd/linkerd2-proxy#655)
* http: Put normalize_uri back on the stack (linkerd/linkerd2-proxy#659)
* inbound: Apply loop detection on the connect stack (linkerd/linkerd2-proxy#660)
* tracing: Elide redundant info in tracing contexts (linkerd/linkerd2-proxy#661)
* outbound: Reorganize outbound stacks (linkerd/linkerd2-proxy#662)
* app: Decouple stacks from listeners (linkerd/linkerd2-proxy#663)
* inbound: Split HTTP detection stack from TLS (linkerd/linkerd2-proxy#664)
* integration: Bundle tests in src (linkerd/linkerd2-proxy#665)
olix0r added a commit to linkerd/linkerd2 that referenced this pull request Sep 19, 2020
This release fixes a recent regression in multicluster gateway
configurations that would forbid inbound gateway traffic. It also fixes
URI normalization for orig-proto-upgrade requests that do not include a
`Host` header.

---

* http: Simplify stacks and target types (linkerd/linkerd2-proxy#656)
* Make SkipDetect more generic as stack::MakeSwitch (linkerd/linkerd2-proxy#657)
* introduce tests for isolated services (linkerd/linkerd2-proxy#655)
* http: Put normalize_uri back on the stack (linkerd/linkerd2-proxy#659)
* inbound: Apply loop detection on the connect stack (linkerd/linkerd2-proxy#660)
* tracing: Elide redundant info in tracing contexts (linkerd/linkerd2-proxy#661)
* outbound: Reorganize outbound stacks (linkerd/linkerd2-proxy#662)
* app: Decouple stacks from listeners (linkerd/linkerd2-proxy#663)
* inbound: Split HTTP detection stack from TLS (linkerd/linkerd2-proxy#664)
* integration: Bundle tests in src (linkerd/linkerd2-proxy#665)
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.

2 participants