Skip to content

Commit 867de8a

Browse files
authored
Make dns resolution async, in async runtime (redis-rs#606)
fixes: redis-rs#379
1 parent 6202e41 commit 867de8a

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ bytes = { version = "1", optional = true }
3737
futures-util = { version = "0.3.15", default-features = false, optional = true }
3838
pin-project-lite = { version = "0.2", optional = true }
3939
tokio-util = { version = "0.7", optional = true }
40-
tokio = { version = "1", features = ["rt"], optional = true }
40+
tokio = { version = "1", features = ["rt", "net"], optional = true }
4141

4242
# Only needed for the connection manager
4343
arc-swap = { version = "1.1.0", optional = true }

src/aio.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::collections::VecDeque;
44
use std::io;
55
use std::mem;
66
use std::net::SocketAddr;
7-
use std::net::ToSocketAddrs;
87
#[cfg(unix)]
98
use std::path::Path;
109
use std::pin::Pin;
@@ -14,6 +13,7 @@ use combine::{parser::combinator::AnySendSyncPartialState, stream::PointerOffset
1413

1514
use ::tokio::{
1615
io::{AsyncRead, AsyncWrite, AsyncWriteExt},
16+
net::lookup_host,
1717
sync::{mpsc, oneshot},
1818
};
1919

@@ -456,7 +456,7 @@ pub(crate) async fn connect_simple<T: RedisRuntime>(
456456
) -> RedisResult<T> {
457457
Ok(match connection_info.addr {
458458
ConnectionAddr::Tcp(ref host, port) => {
459-
let socket_addr = get_socket_addrs(host, port)?;
459+
let socket_addr = get_socket_addrs(host, port).await?;
460460
<T>::connect_tcp(socket_addr).await?
461461
}
462462

@@ -466,7 +466,7 @@ pub(crate) async fn connect_simple<T: RedisRuntime>(
466466
port,
467467
insecure,
468468
} => {
469-
let socket_addr = get_socket_addrs(host, port)?;
469+
let socket_addr = get_socket_addrs(host, port).await?;
470470
<T>::connect_tcp_tls(host, socket_addr, insecure).await?
471471
}
472472

@@ -492,8 +492,8 @@ pub(crate) async fn connect_simple<T: RedisRuntime>(
492492
})
493493
}
494494

495-
fn get_socket_addrs(host: &str, port: u16) -> RedisResult<SocketAddr> {
496-
let mut socket_addrs = (host, port).to_socket_addrs()?;
495+
async fn get_socket_addrs(host: &str, port: u16) -> RedisResult<SocketAddr> {
496+
let mut socket_addrs = lookup_host((host, port)).await?;
497497
match socket_addrs.next() {
498498
Some(socket_addr) => Ok(socket_addr),
499499
None => Err(RedisError::from((

0 commit comments

Comments
 (0)