goodbye posix.listen

see #6600
This commit is contained in:
Andrew Kelley 2026-01-07 14:41:38 -08:00
parent 4a49546f59
commit c89df809b9
2 changed files with 9 additions and 23 deletions

View file

@ -1037,7 +1037,7 @@ test "shutdown" {
defer posix.close(server);
try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));
try bind(server, addrAny(&address), @sizeOf(linux.sockaddr.in));
try posix.listen(server, 1);
try listen(server, 1);
// set address to the OS-chosen IP/port.
var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
@ -2662,7 +2662,7 @@ fn createListenerSocket(address: *linux.sockaddr.in) !posix.socket_t {
try posix.setsockopt(listener_socket, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));
try bind(listener_socket, addrAny(address), @sizeOf(linux.sockaddr.in));
try posix.listen(listener_socket, kernel_backlog);
try listen(listener_socket, kernel_backlog);
// set address to the OS-chosen IP/port.
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)
else => return error.BindFailure,
}
}
fn listen(sock: posix.socket_t, backlog: u31) !void {
switch (posix.errno(posix.system.listen(sock, backlog))) {
.SUCCESS => return,
else => return error.ListenFailure,
}
}

View file

@ -619,27 +619,6 @@ pub fn socketpair(domain: u32, socket_type: u32, protocol: u32) SocketError![2]s
}
}
pub const ListenError = error{
FileDescriptorNotASocket,
OperationUnsupported,
} || std.Io.net.IpAddress.ListenError || std.Io.net.UnixAddress.ListenError;
pub fn listen(sock: socket_t, backlog: u31) ListenError!void {
if (native_os == .windows) {
@compileError("use std.Io instead");
} else {
const rc = system.listen(sock, backlog);
switch (errno(rc)) {
.SUCCESS => return,
.ADDRINUSE => return error.AddressInUse,
.BADF => unreachable,
.NOTSOCK => return error.FileDescriptorNotASocket,
.OPNOTSUPP => return error.OperationUnsupported,
else => |err| return unexpectedErrno(err),
}
}
}
pub const AcceptError = std.Io.net.Server.AcceptError;
pub fn accept(