std.posix: handle ENOTCONN for getpeername

This commit is contained in:
Jan200101 2025-12-04 14:32:36 +01:00
parent d73fbcc3ae
commit a8b516fdaa
No known key found for this signature in database
GPG key ID: 5B71B1D78B882E05

View file

@ -3635,6 +3635,9 @@ pub const GetSockNameError = error{
SocketNotBound,
FileDescriptorNotASocket,
/// The socket is not connected (connection-oriented sockets only).
SocketUnconnected,
} || UnexpectedError;
pub fn getsockname(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void {
@ -3676,6 +3679,7 @@ pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSock
.EFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value
.ENOTSOCK => return error.FileDescriptorNotASocket,
.EINVAL => return error.SocketNotBound,
.ENOTCONN => return error.SocketUnconnected,
else => |err| return windows.unexpectedWSAError(err),
}
}
@ -3691,6 +3695,7 @@ pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSock
.INVAL => unreachable, // invalid parameters
.NOTSOCK => return error.FileDescriptorNotASocket,
.NOBUFS => return error.SystemResources,
.NOTCONN => return error.SocketUnconnected,
}
}
}