mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-03-08 02:24:33 +01:00
parent
1b43f27a91
commit
02c260dd06
2 changed files with 11 additions and 33 deletions
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue