Skip to content

Commit 27b77cc

Browse files
committed
Adapt to winapi 0.2
1 parent 2783715 commit 27b77cc

File tree

1 file changed

+10
-26
lines changed

1 file changed

+10
-26
lines changed

src/net.rs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ use std::os::windows::prelude::*;
1313

1414
use net2::TcpBuilder;
1515
use winapi::*;
16-
use winapi::shared::inaddr::{in_addr_S_un, IN_ADDR};
17-
use winapi::shared::in6addr::{in6_addr_u, IN6_ADDR};
16+
use winapi::inaddr::IN_ADDR;
17+
use winapi::ws2def::SOCKADDR_IN;
18+
use winapi::ws2ipdef::{in6_addr, sockaddr_in6};
1819
use ws2_32::*;
1920

2021
/// A type to represent a buffer in which a socket address will be stored.
@@ -487,7 +488,7 @@ fn cvt(i: c_int, size: DWORD) -> io::Result<Option<usize>> {
487488
#[repr(C)]
488489
pub(crate) union SocketAddrCRepr {
489490
v4: SOCKADDR_IN,
490-
v6: SOCKADDR_IN6_LH,
491+
v6: sockaddr_in6,
491492
}
492493

493494
impl SocketAddrCRepr {
@@ -499,44 +500,27 @@ impl SocketAddrCRepr {
499500
fn socket_addr_to_ptrs(addr: &SocketAddr) -> (SocketAddrCRepr, c_int) {
500501
match *addr {
501502
SocketAddr::V4(ref a) => {
502-
let sin_addr = unsafe {
503-
let mut s_un = mem::zeroed::<in_addr_S_un>();
504-
*s_un.S_addr_mut() = u32::from_ne_bytes(a.ip().octets());
505-
IN_ADDR { S_un: s_un }
506-
};
507-
508503
let sockaddr_in = SOCKADDR_IN {
509504
sin_family: AF_INET as ADDRESS_FAMILY,
510505
sin_port: a.port().to_be(),
511-
sin_addr,
506+
sin_addr: IN_ADDR { S_un: u32::from_ne_bytes(a.ip().octets()) },
512507
sin_zero: [0; 8],
513508
};
514509

515510
let sockaddr = SocketAddrCRepr { v4: sockaddr_in };
516511
(sockaddr, mem::size_of::<SOCKADDR_IN>() as c_int)
517512
}
518513
SocketAddr::V6(ref a) => {
519-
let sin6_addr = unsafe {
520-
let mut u = mem::zeroed::<in6_addr_u>();
521-
*u.Byte_mut() = a.ip().octets();
522-
IN6_ADDR { u }
523-
};
524-
let u = unsafe {
525-
let mut u = mem::zeroed::<SOCKADDR_IN6_LH_u>();
526-
*u.sin6_scope_id_mut() = a.scope_id();
527-
u
528-
};
529-
530-
let sockaddr_in6 = SOCKADDR_IN6_LH {
531-
sin6_family: AF_INET6 as ADDRESS_FAMILY,
514+
let sockaddr_in6 = sockaddr_in6 {
515+
sin6_family: AF_INET6 as i16,
532516
sin6_port: a.port().to_be(),
533-
sin6_addr,
517+
sin6_addr: in6_addr { s6_addr: a.ip().octets() },
534518
sin6_flowinfo: a.flowinfo(),
535-
u,
519+
sin6_scope_id: a.scope_id(),
536520
};
537521

538522
let sockaddr = SocketAddrCRepr { v6: sockaddr_in6 };
539-
(sockaddr, mem::size_of::<SOCKADDR_IN6_LH>() as c_int)
523+
(sockaddr, mem::size_of::<sockaddr_in6>() as c_int)
540524
}
541525
}
542526
}

0 commit comments

Comments
 (0)