Skip to content

Commit ce8090f

Browse files
committed
impl From(net::SocketAddr) for SockaddrStorage and use it to fix a test
on Linux
1 parent 91aab08 commit ce8090f

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/sys/socket/addr.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,16 @@ impl From<net::SocketAddrV6> for SockaddrStorage {
15571557
}
15581558
}
15591559

1560+
#[cfg(feature = "net")]
1561+
impl From<net::SocketAddr> for SockaddrStorage {
1562+
fn from(s: net::SocketAddr) -> Self {
1563+
match s {
1564+
net::SocketAddr::V4(sa4) => Self::from(sa4),
1565+
net::SocketAddr::V6(sa6) => Self::from(sa6),
1566+
}
1567+
}
1568+
}
1569+
15601570
impl Hash for SockaddrStorage {
15611571
fn hash<H: Hasher>(&self, s: &mut H) {
15621572
unsafe {

test/sys/test_socket.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,6 @@ pub fn test_sendmsg_ipv6packetinfo() {
912912
.expect("socket failed");
913913

914914
let std_sa = SocketAddrV6::from_str("[::1]:6000").unwrap();
915-
//let inet_addr = InetAddr::from_std(&std_sa);
916915
let sock_addr: SockaddrIn6 = SockaddrIn6::from(std_sa);
917916

918917
if let Err(Errno::EADDRNOTAVAIL) = bind(sock, &sock_addr) {
@@ -1908,8 +1907,8 @@ mod linux_errqueue {
19081907
use nix::sys::uio::IoVec;
19091908

19101909
const MESSAGE_CONTENTS: &str = "ABCDEF";
1911-
1912-
let sock_addr = SockaddrIn::from_str(sa).unwrap();
1910+
let std_sa = std::net::SocketAddr::from_str(sa).unwrap();
1911+
let sock_addr = SockaddrStorage::from(std_sa);
19131912
let sock = socket(af, SockType::Datagram, SockFlag::SOCK_CLOEXEC, None).unwrap();
19141913
setsockopt(sock, opt, &true).unwrap();
19151914
if let Err(e) = sendto(sock, MESSAGE_CONTENTS.as_bytes(), &sock_addr, MsgFlags::empty()) {

0 commit comments

Comments
 (0)