mirror of
https://github.com/matrix-construct/construct
synced 2024-06-02 10:08:56 +02:00
modules/s_dns_resolver: Deconflict resolver instance pointer from typename.
This commit is contained in:
parent
cbd2f6f4c7
commit
fc786afbd5
|
@ -79,7 +79,7 @@ struct ircd::net::dns::cache::waiter
|
|||
namespace ircd::net::dns
|
||||
{
|
||||
// Resolver instance
|
||||
struct resolver extern *resolver;
|
||||
struct resolver extern *resolver_instance;
|
||||
|
||||
uint16_t resolver_call(const hostport &, const opts &);
|
||||
void resolver_init(answers_callback);
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
#include "s_dns.h"
|
||||
|
||||
decltype(ircd::net::dns::resolver)
|
||||
ircd::net::dns::resolver;
|
||||
decltype(ircd::net::dns::resolver_instance)
|
||||
ircd::net::dns::resolver_instance;
|
||||
|
||||
decltype(ircd::net::dns::resolver::servers)
|
||||
ircd::net::dns::resolver::servers
|
||||
|
@ -21,8 +21,8 @@ ircd::net::dns::resolver::servers
|
|||
{ "default", "4.2.2.1 4.2.2.2 4.2.2.3 4.2.2.4 4.2.2.5 4.2.2.6" },
|
||||
}, []
|
||||
{
|
||||
if(bool(ircd::net::dns::resolver))
|
||||
ircd::net::dns::resolver->set_servers();
|
||||
if(bool(ircd::net::dns::resolver_instance))
|
||||
ircd::net::dns::resolver_instance->set_servers();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -61,8 +61,9 @@ ircd::net::dns::resolver::retry_max
|
|||
void
|
||||
ircd::net::dns::resolver_init(answers_callback callback)
|
||||
{
|
||||
assert(!ircd::net::dns::resolver);
|
||||
ircd::net::dns::resolver = new typename ircd::net::dns::resolver
|
||||
assert(!ircd::net::dns::resolver_instance);
|
||||
|
||||
ircd::net::dns::resolver_instance = new resolver
|
||||
{
|
||||
std::move(callback)
|
||||
};
|
||||
|
@ -71,22 +72,22 @@ ircd::net::dns::resolver_init(answers_callback callback)
|
|||
void
|
||||
ircd::net::dns::resolver_fini()
|
||||
{
|
||||
delete ircd::net::dns::resolver;
|
||||
ircd::net::dns::resolver = nullptr;
|
||||
delete ircd::net::dns::resolver_instance;
|
||||
ircd::net::dns::resolver_instance = nullptr;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
ircd::net::dns::resolver_call(const hostport &hp,
|
||||
const opts &opts)
|
||||
{
|
||||
if(unlikely(!resolver))
|
||||
if(unlikely(!resolver_instance))
|
||||
throw error
|
||||
{
|
||||
"Cannot resolve '%s': resolver unavailable.",
|
||||
host(hp)
|
||||
};
|
||||
|
||||
auto &resolver{*dns::resolver};
|
||||
auto &resolver{*dns::resolver_instance};
|
||||
if(unlikely(!resolver.ns.is_open()))
|
||||
throw error
|
||||
{
|
||||
|
@ -893,7 +894,7 @@ catch(const std::exception &e)
|
|||
};
|
||||
|
||||
resolver::servers.fault();
|
||||
if(!ircd::net::dns::resolver)
|
||||
if(!ircd::net::dns::resolver_instance)
|
||||
set_servers();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue