diff --git a/lib/std/os/linux/IoUring/test.zig b/lib/std/os/linux/IoUring/test.zig index adebad9180..fb0013b9d1 100644 --- a/lib/std/os/linux/IoUring/test.zig +++ b/lib/std/os/linux/IoUring/test.zig @@ -537,7 +537,7 @@ test "sendmsg/recvmsg" { // set address_server to the OS-chosen IP/port. var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in); - try posix.getsockname(server, addrAny(&address_server), &slen); + try getsockname(server, addrAny(&address_server), &slen); const client = try socket(address_server.family, posix.SOCK.DGRAM, 0); defer posix.close(client); @@ -1041,7 +1041,7 @@ test "shutdown" { // set address to the OS-chosen IP/port. var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in); - try posix.getsockname(server, addrAny(&address), &slen); + try getsockname(server, addrAny(&address), &slen); const shutdown_sqe = try ring.shutdown(0x445445445, server, linux.SHUT.RD); try testing.expectEqual(linux.IORING_OP.SHUTDOWN, shutdown_sqe.opcode); @@ -2462,7 +2462,7 @@ test "bind/listen/connect" { // Read system assigned port into addr var addr_len: posix.socklen_t = @sizeOf(linux.sockaddr.in); - try posix.getsockname(listen_fd, addrAny(&addr), &addr_len); + try getsockname(listen_fd, addrAny(&addr), &addr_len); break :brk listen_fd; }; @@ -2666,7 +2666,7 @@ fn createListenerSocket(address: *linux.sockaddr.in) !posix.socket_t { // set address to the OS-chosen IP/port. var slen: posix.socklen_t = @sizeOf(linux.sockaddr.in); - try posix.getsockname(listener_socket, addrAny(address), &slen); + try getsockname(listener_socket, addrAny(address), &slen); return listener_socket; } @@ -2717,3 +2717,10 @@ fn listen(sock: posix.socket_t, backlog: u31) !void { else => return error.ListenFailure, } } + +fn getsockname(sock: posix.socket_t, addr: *posix.sockaddr, addrlen: *posix.socklen_t) !void { + switch (posix.errno(posix.system.getsockname(sock, addr, addrlen))) { + .SUCCESS => return, + else => return error.GetSockNameFailure, + } +} diff --git a/lib/std/posix.zig b/lib/std/posix.zig index ce6e6de15a..373b38be37 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -710,35 +710,6 @@ pub const GetSockNameError = error{ FileDescriptorNotASocket, } || UnexpectedError; -pub fn getsockname(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { - if (native_os == .windows) { - const rc = windows.getsockname(sock, addr, addrlen); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .NOTINITIALISED => unreachable, - .ENETDOWN => return error.NetworkDown, - .EFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value - .ENOTSOCK => return error.FileDescriptorNotASocket, - .EINVAL => return error.SocketNotBound, - else => |err| return windows.unexpectedWSAError(err), - } - } - return; - } else { - const rc = system.getsockname(sock, addr, addrlen); - switch (errno(rc)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, // invalid parameters - .NOTSOCK => return error.FileDescriptorNotASocket, - .NOBUFS => return error.SystemResources, - } - } -} - pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { if (native_os == .windows) { const rc = windows.getpeername(sock, addr, addrlen);