SocketAddrParse
Description
Str overload of SocketAddrParse. Identical contract to the Zstr arm above; provided so callers holding a Str don’t have to reach into .data. The _Generic macro below routes through this for Str * / const Str * inputs.
Success
Returns true; *out populated.
Failure
Returns false; *out zeroed. Silent (no log) — caller is expected to chain into DNS for the hostname case.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Dns.c:552:
// the network.
SocketAddr direct;
if (SocketAddrParse(&direct, spec, kind)) {
VecPushBackR(out, direct);
return true;- In
Socket.c:382:
bool socket_addr_parse_zstr(SocketAddr *out, Zstr spec, SocketKind kind) {
if (!out) {
LOG_FATAL("SocketAddrParse: out is NULL");
}
MemSet(out, 0, sizeof(*out));- In
Socket.c:441:
bool socket_addr_parse_str(SocketAddr *out, const Str *spec, SocketKind kind) {
if (!out) {
LOG_FATAL("SocketAddrParse: out is NULL");
}
MemSet(out, 0, sizeof(*out));
SocketAddr addr;
bool ok = SocketAddrParse(&addr, spec, SOCKET_KIND_TCP);
if (ok) {
Str r = SocketAddrFormat(&addr, a);
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:27:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:48:
Str local_str = SocketAddrFormat(&local, a);
SocketAddr connect_addr;
bool parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
StrDeinit(&local_str);
if (!parsed) {- In
Socket.c:98:
{
SocketAddr addr;
if (!SocketAddrParse(&addr, "127.0.0.1:8080", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:109:
{
SocketAddr addr;
if (!SocketAddrParse(&addr, "[::1]:8080", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:152:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP))
return p;- In
Socket.c:166:
Str local_str = SocketAddrFormat(&local, a);
SocketAddr connect_addr;
bool parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
StrDeinit(&local_str);
if (!parsed) {- In
Socket.c:644:
SocketAddr addr;
bool ok = SocketAddrParse(&addr, spec, SOCKET_KIND_TCP);
if (ok) {
Str r = SocketAddrFormat(&addr, a);- In
Socket.c:780:
SocketAddr addr;
bool ok = SocketAddrParse(&addr, "1.2.3.4:80", SOCKET_KIND_TCP);
ok = ok && addr.family == SOCKET_FAMILY_INET;
// length must be the real sockaddr_in size (16), not a mutated constant.
- In
Socket.c:800:
SocketAddr addr;
bool ok = SocketAddrParse(&addr, "10.0.0.1:4660", SOCKET_KIND_TCP);
Str s = SocketAddrFormat(&addr, a);- In
Socket.c:818:
SocketAddr addr;
bool ok = SocketAddrParse(&addr, "[2001:db8::1]:443", SOCKET_KIND_TCP);
ok = ok && addr.family == SOCKET_FAMILY_INET6;
ok = ok && addr.length == 28u; // sizeof(struct sockaddr_in6)
- In
Socket.c:845:
SocketAddr addr;
bool ok = SocketAddrParse(&addr, "[::1]:8080", SOCKET_KIND_TCP);
ok = ok && addr.family == SOCKET_FAMILY_INET6;- In
Socket.c:861:
bool test_sk3_parse_no_port_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "127.0.0.1", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:868:
bool test_sk3_parse_port_overflow_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "1.2.3.4:99999", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:875:
bool test_sk3_parse_empty_port_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "1.2.3.4:", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:882:
bool test_sk3_parse_unmatched_bracket_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "[::1", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:889:
bool test_sk3_parse_empty_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:897:
bool test_sk3_parse_bracket_missing_colon_rejected(void) {
SocketAddr addr;
bool parsed = SocketAddrParse(&addr, "[::1]8080", SOCKET_KIND_TCP);
return parsed == false;
}- In
Socket.c:915:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:4660", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:951:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:991:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
DefaultAllocatorDeinit(&alloc);
return false;- In
Socket.c:1010:
Str local_str = SocketAddrFormat(&local, a);
SocketAddr connect_addr;
bool parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
StrDeinit(&local_str);
if (!parsed) {- In
Socket.c:1066:
bool test_sk3_nonblocking_set_true_returns_true(void) {
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP)) {
return false;
}- In
Socket.c:1102:
SocketAddr bind_addr;
if (!SocketAddrParse(&bind_addr, "127.0.0.1:0", SOCKET_KIND_TCP))
return false;- In
Socket.c:1118:
Str local_str = SocketAddrFormat(&local, a);
SocketAddr connect_addr;
bool parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
StrDeinit(&local_str);
if (!parsed) {- In
Socket.c:1480:
{
SocketAddr addr;
bool p = SocketAddrParse(&addr, "127.0.0.1:65535", SOCKET_KIND_TCP);
ok = ok && p;
if (p) {- In
Socket.c:1492:
{
SocketAddr addr;
bool p = SocketAddrParse(&addr, "127.0.0.1:0", SOCKET_KIND_TCP);
ok = ok && p;
if (p) {- In
Socket.c:1504:
{
SocketAddr addr;
bool p = SocketAddrParse(&addr, "1.2.3.4:4660", SOCKET_KIND_TCP);
ok = ok && p;
if (p) {- In
Socket.c:1516:
{
SocketAddr addr;
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:65536", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:99999", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:abc", SOCKET_KIND_TCP);- In
Socket.c:1517:
SocketAddr addr;
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:65536", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:99999", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:abc", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:", SOCKET_KIND_TCP);- In
Socket.c:1518:
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:65536", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:99999", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:abc", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:", SOCKET_KIND_TCP);
}- In
Socket.c:1519:
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:99999", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:abc", SOCKET_KIND_TCP);
ok = ok && !SocketAddrParse(&addr, "127.0.0.1:", SOCKET_KIND_TCP);
}- In
Socket.c:1585:
{
SocketAddr addr;
bool p = SocketAddrParse(&addr, "[::1]:4660", SOCKET_KIND_TCP);
ok = ok && p;
if (p) {
Last updated on