Skip to content

Commit 6438d0d

Browse files
committed
Modify response headers
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
1 parent 9abd27d commit 6438d0d

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

linkerd/app/core/src/errors.rs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use http::{header::HeaderValue, StatusCode};
1+
use http::{header::HeaderValue, StatusCode, version::Version};
22
use linkerd_errno::Errno;
33
use linkerd_error::Error;
44
use linkerd_error_metrics as metrics;
@@ -174,13 +174,29 @@ impl<RspB: Default + hyper::body::HttpBody> respond::Respond<http::Response<RspB
174174

175175
fn respond(&self, res: Result<http::Response<RspB>, Error>) -> Result<Self::Response, Error> {
176176
match res {
177-
Ok(response) => Ok(response.map(|b| match *self {
178-
Respond { is_grpc: true, .. } => ResponseBody::Grpc {
179-
inner: b,
180-
trailers: None,
181-
},
182-
_ => ResponseBody::NonGrpc(b),
183-
})),
177+
Ok(mut response) => {
178+
let pseudonym = "linkerd-proxy";
179+
let version = match self.version {
180+
Version::HTTP_10 => "HTTP/1.0",
181+
Version::HTTP_11 => "HTTP/1.1",
182+
Version::HTTP_2 => "HTTP/2",
183+
_ => ""
184+
};
185+
let via_header = HeaderValue::from_str(format!("{} {}", version, pseudonym).as_str());
186+
if let Ok(val) = via_header {
187+
debug!(?val, "via");
188+
response.headers_mut().insert(http::header::VIA, val);
189+
let headers = response.headers();
190+
debug!(?headers, "response_headers");
191+
}
192+
Ok(response.map(|b| match *self {
193+
Respond { is_grpc: true, .. } => ResponseBody::Grpc {
194+
inner: b,
195+
trailers: None,
196+
},
197+
_ => ResponseBody::NonGrpc(b),
198+
}))
199+
}
184200
Err(error) => {
185201
let addr = self
186202
.client
@@ -218,11 +234,13 @@ impl<RspB: Default + hyper::body::HttpBody> respond::Respond<http::Response<RspB
218234
}
219235

220236
let status = http_status(&*error);
237+
const SERVER_HEADER: &'static str = concat!("linkerd-proxy/", env!("CARGO_PKG_VERSION"));
221238
debug!(%status, version = ?self.version, "Handling error with HTTP response");
222239
Ok(http::Response::builder()
223240
.version(self.version)
224241
.status(status)
225242
.header(http::header::CONTENT_LENGTH, "0")
243+
.header(http::header::SERVER, SERVER_HEADER)
226244
.body(ResponseBody::default())
227245
.expect("error response must be valid"))
228246
}

0 commit comments

Comments
 (0)