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