authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-07 14:41:38-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-07 17:33:06-08:00
logc89df809b9ae2dd0c36071544aced320120d4a9d
treecfc821e1ac950931f6121fdb4e21ece2252f9c42
parent4a49546f59db2f90f6f4caaae1e9abccba5f6600

goodbye posix.listen

see #6600

2 files changed, 9 insertions(+), 23 deletions(-)

lib/std/os/linux/IoUring/test.zig+9-2
...@@ -1037,7 +1037,7 @@ test "shutdown" {...@@ -1037,7 +1037,7 @@ test "shutdown" {
1037 defer posix.close(server);1037 defer posix.close(server);
1038 try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));1038 try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));
1039 try bind(server, addrAny(&address), @sizeOf(linux.sockaddr.in));1039 try bind(server, addrAny(&address), @sizeOf(linux.sockaddr.in));
1040 try posix.listen(server, 1);1040 try listen(server, 1);
10411041
1042 // set address to the OS-chosen IP/port.1042 // set address to the OS-chosen IP/port.
1043 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);1043 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
...@@ -2662,7 +2662,7 @@ fn createListenerSocket(address: *linux.sockaddr.in) !posix.socket_t {...@@ -2662,7 +2662,7 @@ fn createListenerSocket(address: *linux.sockaddr.in) !posix.socket_t {
26622662
2663 try posix.setsockopt(listener_socket, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));2663 try posix.setsockopt(listener_socket, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));
2664 try bind(listener_socket, addrAny(address), @sizeOf(linux.sockaddr.in));2664 try bind(listener_socket, addrAny(address), @sizeOf(linux.sockaddr.in));
2665 try posix.listen(listener_socket, kernel_backlog);2665 try listen(listener_socket, kernel_backlog);
26662666
2667 // set address to the OS-chosen IP/port.2667 // set address to the OS-chosen IP/port.
2668 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);2668 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
...@@ -2710,3 +2710,10 @@ fn bind(sock: posix.socket_t, addr: *const posix.sockaddr, len: posix.socklen_t)...@@ -2710,3 +2710,10 @@ fn bind(sock: posix.socket_t, addr: *const posix.sockaddr, len: posix.socklen_t)
2710 else => return error.BindFailure,2710 else => return error.BindFailure,
2711 }2711 }
2712}2712}
2713
2714fn listen(sock: posix.socket_t, backlog: u31) !void {
2715 switch (posix.errno(posix.system.listen(sock, backlog))) {
2716 .SUCCESS => return,
2717 else => return error.ListenFailure,
2718 }
2719}
lib/std/posix.zig-21
...@@ -619,27 +619,6 @@ pub fn socketpair(domain: u32, socket_type: u32, protocol: u32) SocketError![2]s...@@ -619,27 +619,6 @@ pub fn socketpair(domain: u32, socket_type: u32, protocol: u32) SocketError![2]s
619 }619 }
620}620}
621621
622pub const ListenError = error{
623 FileDescriptorNotASocket,
624 OperationUnsupported,
625} || std.Io.net.IpAddress.ListenError || std.Io.net.UnixAddress.ListenError;
626
627pub fn listen(sock: socket_t, backlog: u31) ListenError!void {
628 if (native_os == .windows) {
629 @compileError("use std.Io instead");
630 } else {
631 const rc = system.listen(sock, backlog);
632 switch (errno(rc)) {
633 .SUCCESS => return,
634 .ADDRINUSE => return error.AddressInUse,
635 .BADF => unreachable,
636 .NOTSOCK => return error.FileDescriptorNotASocket,
637 .OPNOTSUPP => return error.OperationUnsupported,
638 else => |err| return unexpectedErrno(err),
639 }
640 }
641}
642
643pub const AcceptError = std.Io.net.Server.AcceptError;622pub const AcceptError = std.Io.net.Server.AcceptError;
644623
645pub fn accept(624pub fn accept(