Function connect [src]

Connect to host:port using the specified protocol. This will reuse a connection if one is already open. If a proxy is configured for the client, then the proxy will be used to connect to the host. This function is threadsafe.

Prototype

pub fn connect( client: *Client, host: []const u8, port: u16, protocol: Protocol, ) ConnectError!*Connection

Parameters

client: *Clienthost: []const u8port: u16protocol: Protocol

Possible Errors

CertificateBundleLoadFailure RequestError
ConnectionRefused ConnectTcpError
ConnectionResetByPeer ConnectTcpError
ConnectionTimedOut ConnectTcpError
HostLacksNetworkAddresses ConnectTcpError
NameServerFailure ConnectTcpError
NetworkUnreachable ConnectTcpError
OutOfMemory Error
TemporaryNameServerFailure ConnectTcpError
TlsInitializationFailed ConnectTcpError
UnexpectedConnectFailure ConnectTcpError
UnknownHostName ConnectTcpError
UnsupportedUriScheme RequestError
UriHostTooLong RequestError
UriMissingHost RequestError

Source

pub fn connect( client: *Client, host: []const u8, port: u16, protocol: Protocol, ) ConnectError!*Connection { const proxy = switch (protocol) { .plain => client.http_proxy, .tls => client.https_proxy, } orelse return client.connectTcp(host, port, protocol); // Prevent proxying through itself. if (std.ascii.eqlIgnoreCase(proxy.host, host) and proxy.port == port and proxy.protocol == protocol) { return client.connectTcp(host, port, protocol); } if (proxy.supports_connect) tunnel: { return connectProxied(client, proxy, host, port) catch |err| switch (err) { error.TunnelNotSupported => break :tunnel, else => |e| return e, }; } // fall back to using the proxy as a normal http proxy const connection = try client.connectTcp(proxy.host, proxy.port, proxy.protocol); connection.proxied = true; return connection; }