Skip to content

Commit 1f80c4e

Browse files
committed
Reuse backends correctly
1 parent 4c2a864 commit 1f80c4e

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

crates/common/src/backend.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,18 @@ pub fn ensure_origin_backend(
2222
}));
2323
}
2424

25-
let host_with_port = match port {
26-
Some(p) => format!("{}:{}", host, p),
27-
None => host.to_string(),
25+
let is_https = scheme.eq_ignore_ascii_case("https");
26+
let target_port = match (port, is_https) {
27+
(Some(p), _) => p,
28+
(None, true) => 443,
29+
(None, false) => 80,
2830
};
2931

30-
// Name: iframe_<scheme>_<host[_port]> (sanitize '.' and ':')
31-
let mut name_base = format!("{}_{}", scheme, host_with_port);
32-
name_base = name_base.replace(['.', ':'], "_");
33-
let backend_name = format!("backend_{}", name_base);
32+
let host_with_port = format!("{}:{}", host, target_port);
33+
34+
// Name: iframe_<scheme>_<host>_<port> (sanitize '.' and ':')
35+
let name_base = format!("{}_{}_{}", scheme, host, target_port);
36+
let backend_name = format!("backend_{}", name_base.replace(['.', ':'], "_"));
3437

3538
// Target base is host[:port]; SSL is enabled only for https scheme
3639
let mut builder = Backend::builder(&backend_name, &host_with_port)
@@ -90,7 +93,7 @@ mod tests {
9093
#[test]
9194
fn returns_name_for_https_no_port() {
9295
let name = ensure_origin_backend("https", "origin.example.com", None).unwrap();
93-
assert_eq!(name, "backend_https_origin_example_com");
96+
assert_eq!(name, "backend_https_origin_example_com_443");
9497
}
9598

9699
#[test]
@@ -101,6 +104,12 @@ mod tests {
101104
assert!(name.ends_with("_8080"));
102105
}
103106

107+
#[test]
108+
fn returns_name_for_http_without_port_defaults_to_80() {
109+
let name = ensure_origin_backend("http", "example.org", None).unwrap();
110+
assert_eq!(name, "backend_http_example_org_80");
111+
}
112+
104113
#[test]
105114
fn error_on_missing_host() {
106115
let err = ensure_origin_backend("https", "", None).err().unwrap();

0 commit comments

Comments
 (0)