Skip to content

Commit 4982937

Browse files
authored
Move HTTP detection & server into linkerd2_proxy_http (#619)
In preparation for upcoming simplifications, this moves the HTTP detection/serving logic into the linkerd2_proxy_http crate.
1 parent 67c7744 commit 4982937

File tree

7 files changed

+31
-31
lines changed

7 files changed

+31
-31
lines changed

Cargo.lock

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,7 @@ dependencies = [
12741274
name = "linkerd2-proxy-http"
12751275
version = "0.1.0"
12761276
dependencies = [
1277+
"async-trait",
12771278
"bytes 0.5.4",
12781279
"futures 0.3.5",
12791280
"h2 0.2.6",
@@ -1290,6 +1291,9 @@ dependencies = [
12901291
"linkerd2-error",
12911292
"linkerd2-http-box",
12921293
"linkerd2-identity",
1294+
"linkerd2-proxy-core",
1295+
"linkerd2-proxy-detect",
1296+
"linkerd2-proxy-transport",
12931297
"linkerd2-stack",
12941298
"linkerd2-timeout",
12951299
"pin-project",

linkerd/app/core/src/proxy/mod.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,8 @@ pub use linkerd2_proxy_api_resolve as api_resolve;
44
pub use linkerd2_proxy_core as core;
55
pub use linkerd2_proxy_detect as detect;
66
pub use linkerd2_proxy_discover as discover;
7-
pub use linkerd2_proxy_http::{
8-
self as http,
9-
// TODO(eliza): port
10-
// grpc
11-
};
7+
pub use linkerd2_proxy_http as http;
128
pub use linkerd2_proxy_identity as identity;
139
pub use linkerd2_proxy_resolve as resolve;
1410
pub use linkerd2_proxy_tap as tap;
1511
pub use linkerd2_proxy_tcp as tcp;
16-
17-
pub mod server;
18-
19-
pub use self::server::ServeHttp;

linkerd/app/inbound/src/lib.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ use linkerd2_app_core::{
1919
proxy::{
2020
detect,
2121
http::{self, normalize_uri, orig_proto, strip_header},
22-
identity,
23-
server::{DetectHttp, ServeHttp},
24-
tap, tcp,
22+
identity, tap, tcp,
2523
},
2624
reconnect, router, serve,
2725
spans::SpanConverter,
@@ -404,15 +402,15 @@ impl Config {
404402
)
405403
});
406404

407-
let tcp_server = ServeHttp::new(
405+
let tcp_server = http::ServeHttp::new(
408406
http_server.into_inner(),
409407
h2_settings,
410408
tcp_forward.into_inner(),
411409
drain.clone(),
412410
);
413411

414412
let tcp_detect = svc::stack(tcp_server)
415-
.push(detect::AcceptLayer::new(DetectHttp::new(
413+
.push(detect::AcceptLayer::new(http::DetectHttp::new(
416414
disable_protocol_detection_for_ports.clone(),
417415
)))
418416
.push(admit::AdmitLayer::new(require_identity_for_inbound_ports))

linkerd/app/outbound/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ use linkerd2_app_core::{
1818
opencensus::proto::trace::v1 as oc,
1919
profiles,
2020
proxy::{
21-
self, core::resolve::Resolve, detect, discover, http, identity, resolve::map_endpoint,
22-
server::DetectHttp, tap, tcp, ServeHttp,
21+
self, core::resolve::Resolve, detect, discover, http, identity, resolve::map_endpoint, tap,
22+
tcp,
2323
},
2424
reconnect, retry, router, serve,
2525
spans::SpanConverter,
@@ -531,7 +531,7 @@ impl Config {
531531
)
532532
.check_new_service::<tls::accept::Meta>();
533533

534-
let tcp_server = ServeHttp::new(
534+
let tcp_server = http::ServeHttp::new(
535535
http_server.into_inner(),
536536
h2_settings,
537537
tcp_forward.into_inner(),
@@ -542,7 +542,7 @@ impl Config {
542542
Conditional::None(tls::ReasonForNoPeerName::Loopback);
543543

544544
let tcp_detect = svc::stack(tcp_server)
545-
.push(detect::AcceptLayer::new(DetectHttp::new(
545+
.push(detect::AcceptLayer::new(http::DetectHttp::new(
546546
disable_protocol_detection_for_ports.clone(),
547547
)))
548548
.push(metrics.transport.layer_accept(TransportLabels))

linkerd/proxy/http/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ This should probably be decomposed into smaller, decoupled crates.
1111
"""
1212

1313
[dependencies]
14+
async-trait = "0.1"
1415
bytes = "0.5"
1516
futures = { package = "futures", version = "0.3" }
1617
h2 = "0.2.6"
@@ -27,6 +28,9 @@ linkerd2-duplex = { path = "../../duplex" }
2728
linkerd2-error = { path = "../../error" }
2829
linkerd2-http-box = { path = "../../http-box" }
2930
linkerd2-identity = { path = "../../identity" }
31+
linkerd2-proxy-core = { path = "../core" }
32+
linkerd2-proxy-detect = { path = "../detect" }
33+
linkerd2-proxy-transport = { path = "../transport" }
3034
linkerd2-stack = { path = "../../stack" }
3135
linkerd2-timeout = { path = "../../timeout" }
3236
rand = "0.7"

linkerd/app/core/src/proxy/server.rs renamed to linkerd/proxy/http/src/detect.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
use crate::proxy::http::{
2-
self,
1+
use crate::Error;
2+
use crate::{
3+
self as http,
34
glue::{Body, HyperServerSvc},
45
h2::Settings as H2Settings,
56
trace, upgrade, Version as HttpVersion,
67
};
7-
use crate::transport::{
8-
io::{self, BoxedIo, Peekable},
9-
tls,
10-
};
11-
use crate::{
12-
drain,
13-
proxy::{core::Accept, detect},
14-
svc::{NewService, Service, ServiceExt},
15-
Error,
16-
};
178
use async_trait::async_trait;
18-
use futures::TryFutureExt;
9+
use futures::prelude::*;
1910
use hyper;
2011
use indexmap::IndexSet;
12+
use linkerd2_drain as drain;
13+
use linkerd2_proxy_core::Accept;
14+
use linkerd2_proxy_detect as detect;
15+
use linkerd2_proxy_transport::{
16+
io::{self, BoxedIo, Peekable},
17+
tls,
18+
};
19+
use linkerd2_stack::NewService;
2120
use std::future::Future;
2221
use std::pin::Pin;
2322
use std::sync::Arc;
2423
use std::task::{Context, Poll};
24+
use tower::{util::ServiceExt, Service};
2525
use tracing::{info_span, trace};
2626
use tracing_futures::Instrument;
2727

linkerd/proxy/http/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub mod add_header;
88
pub mod balance;
99
pub mod canonicalize;
1010
pub mod client;
11+
pub mod detect;
1112
pub mod glue;
1213
pub mod h1;
1314
pub mod h2;
@@ -25,6 +26,7 @@ mod version;
2526

2627
pub use self::{
2728
client::MakeClientLayer,
29+
detect::{DetectHttp, ServeHttp},
2830
glue::{Body, HyperServerSvc},
2931
settings::Settings,
3032
timeout::MakeTimeoutLayer,

0 commit comments

Comments
 (0)