Skip to content

SocketConnect

Description

Open + connect to a remote endpoint.

Parameters

Name Direction Description
out out Connected socket. Untouched on failure.
kind in SOCKET_KIND_TCP or SOCKET_KIND_UDP.
target in Address to connect to.

Success

returns true; out->fd is connected.

Failure

returns false; logs the failing syscall.

Usage example (Cross-references)

Usage examples (Cross-references)
    static i64 udp_round_trip(const SocketAddr *ns, const u8 *query, u64 qlen, u8 *resp_buf, u64 resp_cap, u32 timeout_ms) {
        Socket sock = {0};
        if (!SocketConnect(&sock, SOCKET_KIND_UDP, ns)) {
            return -1;
        }
    // ---------------------------------------------------------------------------
    
    bool SocketConnect(Socket *out, SocketKind kind, const SocketAddr *target) {
        if (!out || !target) {
            LOG_FATAL("SocketConnect: NULL argument");
    bool SocketConnect(Socket *out, SocketKind kind, const SocketAddr *target) {
        if (!out || !target) {
            LOG_FATAL("SocketConnect: NULL argument");
        }
        MemSet(out, 0, sizeof(*out));
        i32 proto    = sock_kind_to_protocol(kind);
        if (af == AF_UNSPEC || socktype < 0) {
            LOG_ERROR("SocketConnect: invalid family/kind combination");
            return false;
        }
    
        Socket upstream;
        if (!SocketConnect(&upstream, SOCKET_KIND_TCP, upstream_addr)) {
            LOG_ERROR("failed to dial upstream for client [{}]", peer_str);
            SocketClose(client);
        }
    
        if (!SocketConnect(&client, SOCKET_KIND_TCP, &connect_addr)) {
            ListenerClose(&listener);
            DefaultAllocatorDeinit(&alloc);
        }
    
        if (!SocketConnect(&p.client, SOCKET_KIND_TCP, &connect_addr)) {
            ListenerClose(&p.listener);
            return p;
    
        Socket client = {0};
        if (!SocketConnect(&client, SOCKET_KIND_TCP, &connect_addr)) {
            ListenerClose(&listener);
            DefaultAllocatorDeinit(&alloc);
        }
    
        if (!SocketConnect(client, SOCKET_KIND_TCP, &connect_addr)) {
            ListenerClose(listener);
            return false;
Last updated on