diff --git a/src/config/static_config.rs b/src/config/static_config.rs index 18addbc..49b9dcf 100644 --- a/src/config/static_config.rs +++ b/src/config/static_config.rs @@ -31,7 +31,7 @@ pub fn default_shutdown_timeout_secs() -> u64 { pub struct ListenerConfig { pub bind_addr: String, #[serde(default = "default_http_port")] - pub http_port: u32, + pub http_port: u16, #[serde(default = "default_https_port")] pub https_port: u16, pub tls: TlsConfig, @@ -39,7 +39,7 @@ pub struct ListenerConfig { pub sites: Vec, } -fn default_http_port() -> u32 { +fn default_http_port() -> u16 { 80 } diff --git a/src/config/validation.rs b/src/config/validation.rs index ea1c84d..0864dc6 100644 --- a/src/config/validation.rs +++ b/src/config/validation.rs @@ -42,19 +42,19 @@ pub enum ValidationError { #[error("body.limit_bytes must be > 0, got {value}")] BodyLimitBytesZero { value: u64 }, #[error("duplicate bind_addr:http_port combination: {bind_addr}:{http_port}")] - DuplicateHttpBind { bind_addr: String, http_port: u32 }, + DuplicateHttpBind { bind_addr: String, http_port: u16 }, #[error( "listener {bind_addr}: http_port ({http_port}) and https_port ({https_port}) must differ" )] HttpsAndHttpPortSame { bind_addr: String, - http_port: u32, + http_port: u16, https_port: u16, }, #[error("listener {bind_addr}: https_port must be 1-65535, got {https_port}")] HttpsPortInvalid { bind_addr: String, https_port: u16 }, #[error("listener {bind_addr}: http_port must be 0 (disabled) or 1-65535, got {http_port}")] - HttpPortInvalid { bind_addr: String, http_port: u32 }, + HttpPortInvalid { bind_addr: String, http_port: u16 }, #[error("health_check_port {health_check_port} conflicts with listener {bind_addr}:{port}")] HealthCheckPortConflict { health_check_port: u16, @@ -123,14 +123,7 @@ pub fn validate( }); } - if listener.http_port > 65535 { - errors.push(ValidationError::HttpPortInvalid { - bind_addr: listener.bind_addr.clone(), - http_port: listener.http_port, - }); - } - - if listener.http_port > 0 && listener.http_port == listener.https_port as u32 { + if listener.http_port > 0 && listener.http_port == listener.https_port { errors.push(ValidationError::HttpsAndHttpPortSame { bind_addr: listener.bind_addr.clone(), http_port: listener.http_port, @@ -195,14 +188,11 @@ pub fn validate( port: listener.https_port, }); } - if listener.http_port > 0 - && listener.http_port <= 65535 - && static_config.health_check_port as u32 == listener.http_port - { + if listener.http_port > 0 && static_config.health_check_port == listener.http_port { errors.push(ValidationError::HealthCheckPortConflict { health_check_port: static_config.health_check_port, bind_addr: listener.bind_addr.clone(), - port: listener.http_port as u16, + port: listener.http_port, }); } } @@ -738,20 +728,6 @@ mod tests { .any(|e| matches!(e, ValidationError::HttpsPortInvalid { .. }))); } - #[test] - fn rule13_http_port_invalid() { - let mut config = valid_static_config(); - config.listeners[0].http_port = 65536; - config.listeners[0].tls = make_acme_tls(); - let dynamic = valid_dynamic_config(); - let result = validate(&config, &dynamic, false); - assert!(result.is_err()); - let errors = result.unwrap_err(); - assert!(errors - .iter() - .any(|e| matches!(e, ValidationError::HttpPortInvalid { .. }))); - } - #[test] fn rule13_http_port_disabled_valid() { let mut config = valid_static_config(); diff --git a/tests/integration_test.rs b/tests/integration_test.rs index 5cd55ea..d42ec74 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -257,7 +257,7 @@ async fn test_rate_limit_eviction_task() { fn make_redirect_listener_config( bind_addr: &str, - http_port: u32, + http_port: u16, https_port: u16, ) -> reverse_proxy::config::static_config::ListenerConfig { reverse_proxy::config::static_config::ListenerConfig {