diff --git a/src/msg_handler/handler.rs b/src/msg_handler/handler.rs index 3f7218a..122cb05 100644 --- a/src/msg_handler/handler.rs +++ b/src/msg_handler/handler.rs @@ -179,11 +179,8 @@ where let headers = response.headers_mut(); remove_connection_header(headers); remove_hop_header(headers); - append_header_entry_with_comma( - headers, - "server", - &format!("{}/{}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")), - )?; + overwrite_header_entry(headers, "server", env!("CARGO_PKG_NAME"))?; + #[cfg(feature = "h3")] { if self.globals.http3 { diff --git a/src/msg_handler/utils_headers.rs b/src/msg_handler/utils_headers.rs index b51a0a1..0a8b76c 100644 --- a/src/msg_handler/utils_headers.rs +++ b/src/msg_handler/utils_headers.rs @@ -16,7 +16,6 @@ pub(super) fn apply_upstream_options_to_header( upstream: &Upstream, ) -> Result<()> { for opt in upstream.opts.iter() { - println!("{:?}", opt); match opt { UpstreamOption::OverrideHost => { // overwrite HOST value with upstream hostname (like 192.168.xx.x seen from rpxy) @@ -75,6 +74,23 @@ pub(super) fn add_header_entry_if_not_exist( Ok(()) } +pub(super) fn overwrite_header_entry( + headers: &mut HeaderMap, + key: &str, + value: &str, +) -> Result<()> { + match headers.entry(HeaderName::from_bytes(key.as_bytes())?) { + header::Entry::Vacant(entry) => { + entry.insert(value.parse::()?); + } + header::Entry::Occupied(mut entry) => { + entry.insert(HeaderValue::from_bytes(value.as_bytes())?); + } + } + + Ok(()) +} + pub(super) fn add_forwarding_header( headers: &mut HeaderMap, client_addr: &SocketAddr, diff --git a/src/msg_handler/utils_request.rs b/src/msg_handler/utils_request.rs index bb32eba..ed3af21 100644 --- a/src/msg_handler/utils_request.rs +++ b/src/msg_handler/utils_request.rs @@ -55,13 +55,11 @@ impl ParseHost for Request { || { let m = headers_host.unwrap().as_bytes(); if m.starts_with(&[b'[']) { - println!("v6 bracket"); // v6 address with bracket case. if port is specified, always it is in this case. let mut iter = m.split(|ptr| ptr == &b'[' || ptr == &b']'); iter.next().ok_or_else(|| anyhow!("Invalid Host"))?; // first item is always blank iter.next().ok_or_else(|| anyhow!("Invalid Host")) } else if m.len() - m.split(|v| v == &b':').fold(0, |acc, s| acc + s.len()) >= 2 { - println!("v6 non-bracket"); // v6 address case, if 2 or more ':' is contained Ok(m) } else {