Skip to content

ListenerClose

Description

Close the listener fd. Safe to call on a zeroed Listener.

Success

Listener is closed and zeroed.

Failure

Function cannot fail; close errors are logged at error level but do not propagate (the fd is gone either way).

Usage example (Cross-references)

Usage examples (Cross-references)
        socklen_t          bound_len = sizeof(bound);
        if (getsockname(listener.fd, (struct sockaddr *)&bound, &bound_len) != 0) {
            ListenerClose(&listener);
            return false;
        }
        SocketAddr connect_addr;
        if (!SocketAddrParse(&connect_addr, spec, SOCKET_KIND_TCP)) {
            ListenerClose(&listener);
            return false;
        }
    
        if (!SocketConnect(&client, SOCKET_KIND_TCP, &connect_addr)) {
            ListenerClose(&listener);
            return false;
        }
        if (!ListenerAccept(&listener, &server)) {
            SocketClose(&client);
            ListenerClose(&listener);
            return false;
        }
            SocketClose(&server);
            SocketClose(&client);
            ListenerClose(&listener);
            return false;
        }
        SocketClose(&server);
        SocketClose(&client);
        ListenerClose(&listener);
        return ok;
    }
    }
    
    void ListenerClose(Listener *self) {
        if (!self) {
            return;
        if (self->fd > 0) {
            if (close(self->fd) < 0) {
                LOG_SYS_ERROR("ListenerClose: close() failed");
            }
        }
    
            LOG_INFO("beam shutting down");
            ListenerClose(&listener);
            LogDeinit();
        }
Last updated on