File tree Expand file tree Collapse file tree
protocol/src/stream/streams/http_tunnel Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,9 +32,12 @@ pub async fn run_proxy_mode(
3232 ctx : & HttpAccessConnContext ,
3333 req : Request < hyper:: body:: Incoming > ,
3434) -> ReturnType {
35+ let scheme = || req. uri ( ) . scheme_str ( ) ;
36+ let port = req. uri ( ) . port_u16 ( ) ;
37+ let port = port. or_else ( || scheme ( ) . and_then ( http_default_port) ) ;
3538 let dst_addr = {
3639 let host = req. uri ( ) . host ( ) . ok_or ( TunnelError :: HttpNoHost ) ?;
37- let port = req . uri ( ) . port_u16 ( ) . ok_or ( TunnelError :: HttpNoPort ) ?;
40+ let port = port . ok_or ( TunnelError :: HttpNoPort ) ?;
3841 let addr = InternetAddr :: from_host_and_port ( host, port) ?;
3942 StreamAddr {
4043 address : addr,
@@ -44,6 +47,15 @@ pub async fn run_proxy_mode(
4447 dispatch ( dst_addr, req, ctx) . await
4548}
4649
50+ fn http_default_port ( scheme : & str ) -> Option < u16 > {
51+ let scheme = scheme. to_lowercase ( ) ;
52+ Some ( match scheme. as_str ( ) {
53+ "http" => 80 ,
54+ "https" => 443 ,
55+ _ => return None ,
56+ } )
57+ }
58+
4759#[ instrument( skip_all, fields( addr = ?dst_addr) ) ]
4860async fn dispatch (
4961 dst_addr : StreamAddr ,
You can’t perform that action at this time.
0 commit comments