@@ -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