diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-11-21 18:07:41 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-11-28 12:54:49 +0100 |
| commit | 25c1459c8a97bb862f1a4c6272f4f9e85def41aa (patch) | |
| tree | d48ad1da467383460ca8e493a296f15d83855ba0 /mullvad-api/src | |
| parent | 27c30f5bfb0105c145ce235e7b54503718273b5f (diff) | |
| download | mullvadvpn-25c1459c8a97bb862f1a4c6272f4f9e85def41aa.tar.xz mullvadvpn-25c1459c8a97bb862f1a4c6272f4f9e85def41aa.zip | |
Use specified port for the API
Diffstat (limited to 'mullvad-api/src')
| -rw-r--r-- | mullvad-api/src/https_client_with_sni.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/mullvad-api/src/https_client_with_sni.rs b/mullvad-api/src/https_client_with_sni.rs index 632d325ff3..bfacba69d5 100644 --- a/mullvad-api/src/https_client_with_sni.rs +++ b/mullvad-api/src/https_client_with_sni.rs @@ -215,18 +215,23 @@ impl HttpsConnectorWithSni { } async fn resolve_address(address_cache: AddressCache, uri: Uri) -> io::Result<SocketAddr> { + const DEFAULT_PORT: u16 = 443; + let hostname = uri.host().ok_or_else(|| { io::Error::new(io::ErrorKind::InvalidInput, "invalid url, missing host") })?; - let port = uri.port_u16().unwrap_or(443); + let port = uri.port_u16(); if let Ok(addr) = hostname.parse::<IpAddr>() { - return Ok(SocketAddr::new(addr, port)); + return Ok(SocketAddr::new(addr, port.unwrap_or(DEFAULT_PORT))); } // Preferentially, use cached address. // if let Some(addr) = address_cache.resolve_hostname(hostname).await { - return Ok(SocketAddr::new(addr.ip(), port)); + return Ok(SocketAddr::new( + addr.ip(), + port.unwrap_or_else(|| addr.port()), + )); } // Use getaddrinfo as a fallback @@ -241,7 +246,7 @@ impl HttpsConnectorWithSni { let addr = addrs .next() .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "Empty DNS response"))?; - Ok(SocketAddr::new(addr.ip(), port)) + Ok(SocketAddr::new(addr.ip(), port.unwrap_or(DEFAULT_PORT))) } } |
