authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-07 14:45:09-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-07 17:33:07-08:00
log02c260dd06988f6acd8a1cbfbacb306d9c367ced
tree84fa85938e81aff0eaa9af9fc4cd99e59ecece40
parent1b43f27a91cfa2722e256f561b7e08f163913933

goodbye posix.getsockname

see #6600

2 files changed, 11 insertions(+), 33 deletions(-)

lib/std/os/linux/IoUring/test.zig+11-4
......@@ -537,7 +537,7 @@ test "sendmsg/recvmsg" {
537537
538538 // set address_server to the OS-chosen IP/port.
539539 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
540 try posix.getsockname(server, addrAny(&address_server), &slen);
540 try getsockname(server, addrAny(&address_server), &slen);
541541
542542 const client = try socket(address_server.family, posix.SOCK.DGRAM, 0);
543543 defer posix.close(client);
......@@ -1041,7 +1041,7 @@ test "shutdown" {
10411041
10421042 // set address to the OS-chosen IP/port.
10431043 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
1044 try posix.getsockname(server, addrAny(&address), &slen);
1044 try getsockname(server, addrAny(&address), &slen);
10451045
10461046 const shutdown_sqe = try ring.shutdown(0x445445445, server, linux.SHUT.RD);
10471047 try testing.expectEqual(linux.IORING_OP.SHUTDOWN, shutdown_sqe.opcode);
......@@ -2462,7 +2462,7 @@ test "bind/listen/connect" {
24622462
24632463 // Read system assigned port into addr
24642464 var addr_len: posix.socklen_t = @sizeOf(linux.sockaddr.in);
2465 try posix.getsockname(listen_fd, addrAny(&addr), &addr_len);
2465 try getsockname(listen_fd, addrAny(&addr), &addr_len);
24662466
24672467 break :brk listen_fd;
24682468 };
......@@ -2666,7 +2666,7 @@ fn createListenerSocket(address: *linux.sockaddr.in) !posix.socket_t {
26662666
26672667 // set address to the OS-chosen IP/port.
26682668 var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in);
2669 try posix.getsockname(listener_socket, addrAny(address), &slen);
2669 try getsockname(listener_socket, addrAny(address), &slen);
26702670
26712671 return listener_socket;
26722672}
......@@ -2717,3 +2717,10 @@ fn listen(sock: posix.socket_t, backlog: u31) !void {
27172717 else => return error.ListenFailure,
27182718 }
27192719}
2720
2721fn getsockname(sock: posix.socket_t, addr: *posix.sockaddr, addrlen: *posix.socklen_t) !void {
2722 switch (posix.errno(posix.system.getsockname(sock, addr, addrlen))) {
2723 .SUCCESS => return,
2724 else => return error.GetSockNameFailure,
2725 }
2726}
lib/std/posix.zig-29
......@@ -710,35 +710,6 @@ pub const GetSockNameError = error{
710710 FileDescriptorNotASocket,
711711} || UnexpectedError;
712712
713pub fn getsockname(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void {
714 if (native_os == .windows) {
715 const rc = windows.getsockname(sock, addr, addrlen);
716 if (rc == windows.ws2_32.SOCKET_ERROR) {
717 switch (windows.ws2_32.WSAGetLastError()) {
718 .NOTINITIALISED => unreachable,
719 .ENETDOWN => return error.NetworkDown,
720 .EFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value
721 .ENOTSOCK => return error.FileDescriptorNotASocket,
722 .EINVAL => return error.SocketNotBound,
723 else => |err| return windows.unexpectedWSAError(err),
724 }
725 }
726 return;
727 } else {
728 const rc = system.getsockname(sock, addr, addrlen);
729 switch (errno(rc)) {
730 .SUCCESS => return,
731 else => |err| return unexpectedErrno(err),
732
733 .BADF => unreachable, // always a race condition
734 .FAULT => unreachable,
735 .INVAL => unreachable, // invalid parameters
736 .NOTSOCK => return error.FileDescriptorNotASocket,
737 .NOBUFS => return error.SystemResources,
738 }
739 }
740}
741
742713pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void {
743714 if (native_os == .windows) {
744715 const rc = windows.getpeername(sock, addr, addrlen);