static void nn_ctcp_start_resolving (struct nn_ctcp *self) { const char *addr; const char *begin; const char *end; int ipv4only; size_t ipv4onlylen; /* Extract the hostname part from address string. */ addr = nn_epbase_getaddr (&self->epbase); begin = strchr (addr, ';'); if (!begin) begin = addr; else ++begin; end = strrchr (addr, ':'); nn_assert (end); /* Check whether IPv6 is to be used. */ ipv4onlylen = sizeof (ipv4only); nn_epbase_getopt (&self->epbase, NN_SOL_SOCKET, NN_IPV4ONLY, &ipv4only, &ipv4onlylen); nn_assert (ipv4onlylen == sizeof (ipv4only)); /* TODO: Get the actual value of IPV4ONLY option. */ nn_dns_start (&self->dns, begin, end - begin, ipv4only, &self->dns_result); self->state = NN_CTCP_STATE_RESOLVING; }
static void nn_cws_start_resolving (struct nn_cws *self) { int ipv4only; size_t ipv4onlylen; char *host; /* Check whether IPv6 is to be used. */ ipv4onlylen = sizeof (ipv4only); nn_epbase_getopt (&self->epbase, NN_SOL_SOCKET, NN_IPV4ONLY, &ipv4only, &ipv4onlylen); nn_assert (ipv4onlylen == sizeof (ipv4only)); host = nn_chunkref_data (&self->remote_host); nn_assert (strlen (host) > 0); nn_dns_start (&self->dns, host, self->remote_hostname_len, ipv4only, &self->dns_result); self->state = NN_CWS_STATE_RESOLVING; }