Ignorant question: does qio_dns_resolver_lookup_sync() do the right thing for SOCKET_ADDRESS_KIND_FD? The switch doesn't have a case for it, and it's unclear whether the default case is really meant for SOCKET_ADDRESS_KIND_FD in addition to impossible enumeration values.
Aside: impossible value means your program state is fatally compromised. I'd rather assert then. int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, SocketAddress *addr, size_t *naddrs, SocketAddress ***addrs, Error **errp) { switch (addr->type) { case SOCKET_ADDRESS_KIND_INET: return qio_dns_resolver_lookup_sync_inet(resolver, addr, naddrs, addrs, errp); case SOCKET_ADDRESS_KIND_UNIX: case SOCKET_ADDRESS_KIND_VSOCK: return qio_dns_resolver_lookup_sync_nop(resolver, addr, naddrs, addrs, errp); default: error_setg(errp, "Unknown socket address kind"); return -1; } }