also try all socket_addrs for tls and tor

pull/22/head
chris west 4 years ago
parent 015c7878cc
commit 38e660ccb6

@ -168,10 +168,10 @@ pub fn request(host: &str, port: &str, selector: &str, tls: bool, tor: bool) ->
{ {
{ {
if let Ok(connector) = TlsConnector::new() { if let Ok(connector) = TlsConnector::new() {
let sock = addr.to_socket_addrs().and_then(|mut socks| { let stream = addr
socks.next().ok_or_else(|| error!("Can't create socket")) .to_socket_addrs()?
})?; .find_map(|s| TcpStream::connect_timeout(&s, TCP_TIMEOUT_DURATION).ok())
let stream = TcpStream::connect_timeout(&sock, TCP_TIMEOUT_DURATION)?; .ok_or_else(|| error!("Can't create socket"))?;
stream.set_read_timeout(Some(TCP_TIMEOUT_DURATION))?; stream.set_read_timeout(Some(TCP_TIMEOUT_DURATION))?;
if let Ok(mut stream) = connector.connect(host, stream) { if let Ok(mut stream) = connector.connect(host, stream) {
stream.write_all(selector.as_ref())?; stream.write_all(selector.as_ref())?;
@ -190,15 +190,11 @@ pub fn request(host: &str, port: &str, selector: &str, tls: bool, tor: bool) ->
if tor { if tor {
#[cfg(feature = "tor")] #[cfg(feature = "tor")]
{ {
let proxy = std::env::var("TOR_PROXY") let mut stream = std::env::var("TOR_PROXY")
.unwrap_or_else(|_| "127.0.0.1:9050".into()) .unwrap_or_else(|_| "127.0.0.1:9050".into())
.to_socket_addrs()? .to_socket_addrs()?
.next() .find_map(|s| TorStream::connect_with_address(s, addr.as_ref()).ok())
.unwrap(); .ok_or_else(|| error!("Can't create socket"))?;
let mut stream = match TorStream::connect_with_address(proxy, addr.as_ref()) {
Ok(s) => s,
Err(e) => return Err(error!("Tor error: {}", e)),
};
stream.write_all(selector.as_ref())?; stream.write_all(selector.as_ref())?;
stream.write_all("\r\n".as_ref())?; stream.write_all("\r\n".as_ref())?;
return Ok(Stream { return Ok(Stream {

Loading…
Cancel
Save