Add tolerance for REMOTE_ADDR without a port

This commit is contained in:
Emi Tatsuo 2020-12-03 08:32:06 -05:00
parent fb357b59eb
commit d8d15d8f72
Signed by: Emi
GPG key ID: 68FAB2E2E6DFC98B

View file

@ -238,13 +238,14 @@ impl ServerInner {
.ip() .ip()
} }
#[cfg(feature = "scgi_srv")] { #[cfg(feature = "scgi_srv")] {
SocketAddr::from_str( let remote = request.headers()
request.headers() .get("REMOTE_ADDR")
.get("REMOTE_ADDR") .ok_or(ParseError::Malformed("REMOTE_ADDR header not received"))?
.ok_or(ParseError::Malformed("REMOTE_ADDR header not received"))? .as_str();
.as_str() SocketAddr::from_str(remote)
).context("Received malformed IP address from upstream")? .map(|a| a.ip())
.ip() .or_else(|_| std::net::IpAddr::from_str(remote))
.context("Received malformed IP address from upstream")?
} }
}; };