mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-03-08 02:44:43 +01:00
parent
4a49546f59
commit
c89df809b9
2 changed files with 9 additions and 23 deletions
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue