Skip to content

Commit ab71db9

Browse files
committed
socket: change accept to take an AsFd
1 parent 81bd801 commit ab71db9

4 files changed

Lines changed: 11 additions & 10 deletions

File tree

changelog/2780.changed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
Change `sys::socket::accept` and `sys::socket::accept4` to return `OwnedFd` instead of `RawFd`.
2+
Change `sys::socket::accept` and `sys::socket::accept4` to take `AsFd` instead of `RawFd`.

src/sys/socket/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2340,8 +2340,8 @@ pub fn bind(fd: RawFd, addr: &dyn SockaddrLike) -> Result<()> {
23402340
/// Accept a connection on a socket
23412341
///
23422342
/// [Further reading](https://pubs.opengroup.org/onlinepubs/9699919799/functions/accept.html)
2343-
pub fn accept(sockfd: RawFd) -> Result<OwnedFd> {
2344-
let res = unsafe { libc::accept(sockfd, ptr::null_mut(), ptr::null_mut()) };
2343+
pub fn accept<Fd: AsFd>(sockfd: Fd) -> Result<OwnedFd> {
2344+
let res = unsafe { libc::accept(sockfd.as_fd().as_raw_fd(), ptr::null_mut(), ptr::null_mut()) };
23452345

23462346
Errno::result(res).map(|fd| unsafe { OwnedFd::from_raw_fd(fd) })
23472347
}
@@ -2365,9 +2365,9 @@ pub fn accept(sockfd: RawFd) -> Result<OwnedFd> {
23652365
solarish,
23662366
target_os = "linux",
23672367
))]
2368-
pub fn accept4(sockfd: RawFd, flags: SockFlag) -> Result<OwnedFd> {
2368+
pub fn accept4<Fd: AsFd>(sockfd: Fd, flags: SockFlag) -> Result<OwnedFd> {
23692369
let res = unsafe {
2370-
libc::accept4(sockfd, ptr::null_mut(), ptr::null_mut(), flags.bits())
2370+
libc::accept4(sockfd.as_fd().as_raw_fd(), ptr::null_mut(), ptr::null_mut(), flags.bits())
23712371
};
23722372

23732373
Errno::result(res).map(|fd| unsafe { OwnedFd::from_raw_fd(fd) })

test/sys/test_socket.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ pub fn test_af_alg_cipher() {
974974
assert_eq!(sockaddr.alg_type().to_string_lossy(), alg_type);
975975

976976
setsockopt(&sock, AlgSetKey::default(), &key).expect("setsockopt");
977-
let session_socket = accept(sock.as_raw_fd()).expect("accept failed");
977+
let session_socket = accept(sock).expect("accept failed");
978978

979979
let msgs = [
980980
ControlMessage::AlgSetOp(&libc::ALG_OP_ENCRYPT),
@@ -1083,7 +1083,7 @@ pub fn test_af_alg_aead() {
10831083
.expect("setsockopt AlgSetAeadAuthSize");
10841084
setsockopt(&sock, AlgSetKey::default(), &key)
10851085
.expect("setsockopt AlgSetKey");
1086-
let session_socket = accept(sock.as_raw_fd()).expect("accept failed");
1086+
let session_socket = accept(&sock).expect("accept failed");
10871087

10881088
let msgs = [
10891089
ControlMessage::AlgSetOp(&ALG_OP_ENCRYPT),
@@ -1116,7 +1116,7 @@ pub fn test_af_alg_aead() {
11161116

11171117
let iv = vec![1u8; iv_len];
11181118

1119-
let session_socket = accept(sock.as_raw_fd()).expect("accept failed");
1119+
let session_socket = accept(sock).expect("accept failed");
11201120

11211121
let msgs = [
11221122
ControlMessage::AlgSetOp(&ALG_OP_DECRYPT),
@@ -1680,7 +1680,7 @@ pub fn test_named_unixdomain() {
16801680
write(&s2, b"hello").expect("write failed");
16811681
});
16821682

1683-
let s3 = accept(s1.as_raw_fd()).expect("accept failed");
1683+
let s3 = accept(s1).expect("accept failed");
16841684

16851685
let mut buf = [0; 5];
16861686
read(s3, &mut buf).unwrap();

test/sys/test_sockopt.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ fn test_so_tcp_maxseg() {
205205

206206
connect(ssock.as_raw_fd(), &sock_addr).unwrap();
207207

208-
let rsess = accept(rsock.as_raw_fd()).unwrap();
208+
let rsess = accept(rsock).unwrap();
209209

210210
cfg_if! {
211211
if #[cfg(apple_targets)] {
@@ -904,7 +904,7 @@ fn test_ktls() {
904904
.unwrap();
905905
connect(ssock.as_raw_fd(), &sock_addr).unwrap();
906906

907-
let _rsess = accept(rsock.as_raw_fd()).unwrap();
907+
let _rsess = accept(rsock).unwrap();
908908

909909
match setsockopt(&ssock, sockopt::TcpUlp::default(), b"tls") {
910910
Ok(()) => (),

0 commit comments

Comments
 (0)