From 38488ef3ea391a209c73bffc6e6c3a4c0f678337 Mon Sep 17 00:00:00 2001 From: Philipp Krones Date: Fri, 5 Jun 2026 12:45:05 +0200 Subject: [PATCH] [memcached] Fix TCP address resolution PR #7112 added support for Unix sockets to the memcached backend. As a side effect, it switched the TCP address parsing from being done inside of `TcpStream::connect` to `SocketAddr::parse`. The major difference is that `SocketAddr::parse` cannot resolve addresses like `localhost:1234`, as it errors out if it sees non-octal numbers in the address. This seemed like an unintended breaking change to me. I also can't see the benefit of doing that, as `TcpStream::connect` already calls `to_socket_addrs` internally. --- core/services/memcached/src/core.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/services/memcached/src/core.rs b/core/services/memcached/src/core.rs index 1221bb08ed7f..2b9a49533245 100644 --- a/core/services/memcached/src/core.rs +++ b/core/services/memcached/src/core.rs @@ -23,7 +23,6 @@ use fastpool::bounded; use opendal_core::raw::*; use opendal_core::*; use std::io; -use std::net::SocketAddr; use std::pin::Pin; use std::task::{Context, Poll}; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; @@ -42,10 +41,7 @@ pub enum SocketStream { impl SocketStream { pub async fn connect_tcp(addr_str: &str) -> io::Result { - let socket_addr: SocketAddr = addr_str - .parse() - .map_err(|e| io::Error::new(io::ErrorKind::InvalidInput, e))?; - let stream = TcpStream::connect(socket_addr).await?; + let stream = TcpStream::connect(addr_str).await?; Ok(SocketStream::Tcp(stream)) }