Update the url crate to 2.0

pull/63/head
Simon Sapin 5 years ago
parent 46629f7ed4
commit 4b1d89daf1
  1. 4
      Cargo.toml
  2. 25
      src/client.rs

@ -9,7 +9,7 @@ readme = "README.md"
homepage = "https://github.com/snapview/tungstenite-rs"
documentation = "https://docs.rs/tungstenite/0.8.1"
repository = "https://github.com/snapview/tungstenite-rs"
version = "0.8.1"
version = "0.9.0"
[features]
default = ["tls"]
@ -25,7 +25,7 @@ input_buffer = "0.2.0"
log = "0.4.2"
rand = "0.6.4"
sha-1 = "0.8"
url = "1.7.0"
url = "2.0"
utf-8 = "0.7.2"
[dependencies.native-tls]

@ -87,7 +87,26 @@ pub fn connect_with_config<'t, Req: Into<Request<'t>>>(
) -> Result<(WebSocket<AutoStream>, Response)> {
let request: Request = request.into();
let mode = url_mode(&request.url)?;
let addrs = request.url.to_socket_addrs()?;
let host = request.url.host()
.ok_or_else(|| Error::Url("No host name in the URL".into()))?;
let port = request.url.port_or_known_default()
.ok_or_else(|| Error::Url("No port number in the URL".into()))?;
let addrs;
let addr;
let addrs = match host {
url::Host::Domain(domain) => {
addrs = (domain, port).to_socket_addrs()?;
addrs.as_slice()
}
url::Host::Ipv4(ip) => {
addr = (ip, port).into();
std::slice::from_ref(&addr)
}
url::Host::Ipv6(ip) => {
addr = (ip, port).into();
std::slice::from_ref(&addr)
}
};
let mut stream = connect_to_some(addrs, &request.url, mode)?;
NoDelay::set_nodelay(&mut stream, true)?;
client_with_config(request, stream, config)
@ -115,9 +134,7 @@ pub fn connect<'t, Req: Into<Request<'t>>>(request: Req)
connect_with_config(request, None)
}
fn connect_to_some<A>(addrs: A, url: &Url, mode: Mode) -> Result<AutoStream>
where A: Iterator<Item=SocketAddr>
{
fn connect_to_some(addrs: &[SocketAddr], url: &Url, mode: Mode) -> Result<AutoStream> {
let domain = url.host_str().ok_or_else(|| Error::Url("No host name in the URL".into()))?;
for addr in addrs {
debug!("Trying to contact {} at {}...", url, addr);

Loading…
Cancel
Save