Skip to content
ListenerAccept

ListenerAccept

Description

Accept the next pending connection on a listener.

Parameters

Name Direction Description
self in,out Listener to accept on.
out_conn out Populated with the new connected Socket on success.

Success

returns true; out_conn->fd is the new socket fd.

Failure

returns false; logs the failing syscall. On EINTR / EAGAIN the caller should retry.

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool ListenerAccept(Listener *self, Socket *out_conn) {
        if (!self || !out_conn) {
            LOG_FATAL("ListenerAccept: NULL argument");
    bool ListenerAccept(Listener *self, Socket *out_conn) {
        if (!self || !out_conn) {
            LOG_FATAL("ListenerAccept: NULL argument");
        }
        MemSet(out_conn, 0, sizeof(*out_conn));
    
                Socket client;
                if (!ListenerAccept(&listener, &client)) {
                    continue;
                }
        }
    
        if (!ListenerAccept(&listener, &server)) {
            SocketClose(&client);
            ListenerClose(&listener);
        }
    
        if (!ListenerAccept(&p.listener, &p.server)) {
            SocketClose(&p.client);
            ListenerClose(&p.listener);
    
        Socket server = {0};
        bool   ok     = ListenerAccept(&listener, &server);
        ok            = ok && server.kind == SOCKET_KIND_TCP;
        }
    
        if (!ListenerAccept(listener, server)) {
            SocketClose(client);
            ListenerClose(listener);
Last updated on