void resolve_remote(struct remote_context *remote, char *host, uint16_t port) { if (verbose) { logger_log(LOG_INFO, "resolve %s", host); } struct resolver_context *dns = uv_key_get(&thread_resolver_key); remote->stage = XSTAGE_RESOLVE; remote->host_query = resolver_query(dns, host, port, resolve_cb, remote); if (remote->host_query == NULL) { remote->stage = XSTAGE_TERMINATE; close_client(remote->client); close_remote(remote); } }
void client::connect(const std::string& hostname, int port) { if (_running) { return; } if (!_encryption->last_error().empty()) { error(-1, _encryption->last_error()); return; } _running = true; tcp::resolver resolver(_service); tcp::resolver::query resolver_query(hostname, std::to_string(port)); _endpoint = resolver.resolve(resolver_query); try_connect(); }
void resolve_remote(struct remote_context *remote, char *host, uint16_t port) { struct resolver_context *ctx = remote->handle.handle.loop->data; remote->stage = XSTAGE_RESOLVE; remote->host_query = resolver_query(ctx, host, port, resolve_cb, remote); }