SocketAddrParse
Description
Parse a host:port string into a SocketAddr.
Accepted forms: “127.0.0.1:8080” “[::1]:8080” “example.com:80” (DNS resolved via libc getaddrinfo)
Parameters
| Name | Direction | Description |
|---|---|---|
out |
out | Result address. Left zeroed on failure. |
spec |
in | Host:port specifier. |
kind |
in | SOCKET_KIND_TCP or SOCKET_KIND_UDP. Influences which protocol getaddrinfo is asked for. |
Success
returns true; out populated.
Failure
returns false; logs the resolver error; out zeroed.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Socket.c:23:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
return false;
}- In
Socket.c:43:
snprintf(spec, sizeof(spec), "127.0.0.1:%u", (unsigned)port);
SocketAddr connect_addr;
if (!SocketAddrParse(&connect_addr, spec, SOCKET_KIND_TCP)) {
ListenerClose(&listener);
return false;- In
Socket.c:86:
{
SocketAddr addr;
if (!SocketAddrParse(&addr, "127.0.0.1:8080", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:97:
{
SocketAddr addr;
if (!SocketAddrParse(&addr, "[::1]:8080", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:143:
// ---------------------------------------------------------------------------
bool SocketAddrParse(SocketAddr *out, const char *spec, SocketKind kind) {
if (!out) {
LOG_ERROR("SocketAddrParse: out is NULL");- In
Socket.c:145:
bool SocketAddrParse(SocketAddr *out, const char *spec, SocketKind kind) {
if (!out) {
LOG_ERROR("SocketAddrParse: out is NULL");
return false;
}- In
Socket.c:151:
if (!spec) {
LOG_ERROR("SocketAddrParse: spec is NULL");
return false;
}- In
Socket.c:158:
const char *port = NULL;
if (!split_host_port(spec, host, sizeof(host), &port)) {
LOG_ERROR("SocketAddrParse: cannot split host:port in \"{}\"", spec);
return false;
}- In
Socket.c:172:
i32 gairet = getaddrinfo(host, port, &hints, &res);
if (gairet != 0) {
LOG_ERROR("SocketAddrParse: getaddrinfo(\"{}\") failed: {}", spec, gai_strerror(gairet));
return false;
}- In
Socket.c:176:
}
if (!res) {
LOG_ERROR("SocketAddrParse: getaddrinfo(\"{}\") returned no results", spec);
return false;
}- In
Beam.c:206:
SocketAddr listen_addr;
if (!SocketAddrParse(&listen_addr, listen_spec, SOCKET_KIND_TCP)) {
LOG_ERROR("invalid --listen address: {}", listen_spec);
LogDeinit();- In
Beam.c:213:
SocketAddr upstream_addr;
if (!SocketAddrParse(&upstream_addr, upstream_spec, SOCKET_KIND_TCP)) {
LOG_ERROR("invalid --upstream address: {}", upstream_spec);
LogDeinit();
Last updated on