Skip to content
ListenerLocalAddr

ListenerLocalAddr

Description

Query the actually-bound local address of a listener. Useful after ListenerOpen with port 0, where the kernel picks the port. Wraps getsockname on POSIX / Winsock identically.

Parameters

Name Direction Description
self in Open listener.
out out Filled with the bound address. Zeroed on failure.

Success

returns true; out populated.

Failure

returns false; logs the failing syscall.

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool ListenerLocalAddr(const Listener *self, SocketAddr *out) {
        if (!self || !out) {
            LOG_FATAL("ListenerLocalAddr: NULL argument");
    bool ListenerLocalAddr(const Listener *self, SocketAddr *out) {
        if (!self || !out) {
            LOG_FATAL("ListenerLocalAddr: NULL argument");
        }
        MemSet(out, 0, sizeof(*out));
        // public API.
        SocketAddr local;
        if (!ListenerLocalAddr(&listener, &local)) {
            ListenerClose(&listener);
            DefaultAllocatorDeinit(&alloc);
    
        SocketAddr local;
        if (!ListenerLocalAddr(&p.listener, &local)) {
            ListenerClose(&p.listener);
            return p;
    
        SocketAddr local;
        bool       ok = ListenerLocalAddr(&listener, &local);
        // family + length come straight from fill_socket_addr_from_sockaddr.
        ok = ok && local.family == SOCKET_FAMILY_INET;
    
        SocketAddr local;
        bool       ok = ListenerLocalAddr(&listener, &local);
        ok            = ok && local.family == SOCKET_FAMILY_INET;
        ok            = ok && local.length == 16u;
    
        SocketAddr local;
        if (!ListenerLocalAddr(&listener, &local)) {
            ListenerClose(&listener);
            DefaultAllocatorDeinit(&alloc);
    
        SocketAddr local;
        if (!ListenerLocalAddr(listener, &local)) {
            ListenerClose(listener);
            return false;
    
        SocketAddr local;
        bool       ok = ListenerLocalAddr(&listener, &local);
        ok            = ok && local.family == SOCKET_FAMILY_INET;
        ok            = ok && local.length == 16u;
Last updated on