mirror of
https://github.com/matrix-construct/construct
synced 2024-12-27 07:54:05 +01:00
ircd::server: Re-resolve DNS for peer after TTL expiration.
This commit is contained in:
parent
d6200a7ac3
commit
f0f25ff236
1 changed files with 15 additions and 3 deletions
|
@ -183,7 +183,18 @@ ircd::server::get(const net::hostport &hostport)
|
||||||
if(it == peers.end() || it->first != hostcanon)
|
if(it == peers.end() || it->first != hostcanon)
|
||||||
it = create(hostport, it);
|
it = create(hostport, it);
|
||||||
|
|
||||||
return *it->second;
|
auto &peer
|
||||||
|
{
|
||||||
|
*it->second
|
||||||
|
};
|
||||||
|
|
||||||
|
if(peer.expired() && !peer.op_resolve)
|
||||||
|
{
|
||||||
|
assert(peer.hostcanon.data() == it->first.data());
|
||||||
|
peer.resolve(peer.open_opts.hostport);
|
||||||
|
}
|
||||||
|
|
||||||
|
return peer;
|
||||||
}
|
}
|
||||||
|
|
||||||
decltype(ircd::server::peers)::iterator
|
decltype(ircd::server::peers)::iterator
|
||||||
|
@ -206,9 +217,7 @@ ircd::server::create(const net::hostport &hostport,
|
||||||
assert(!empty(peer->hostcanon));
|
assert(!empty(peer->hostcanon));
|
||||||
const string_view key{peer->hostcanon};
|
const string_view key{peer->hostcanon};
|
||||||
it = peers.emplace_hint(it, key, std::move(peer));
|
it = peers.emplace_hint(it, key, std::move(peer));
|
||||||
|
|
||||||
assert(it->second->hostcanon.data() == it->first.data());
|
assert(it->second->hostcanon.data() == it->first.data());
|
||||||
it->second->resolve(it->second->open_opts.hostport);
|
|
||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2104,6 +2113,9 @@ ircd::server::link::open(const net::open_opts &open_opts)
|
||||||
if(op_init)
|
if(op_init)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if(opened())
|
||||||
|
return false;
|
||||||
|
|
||||||
auto handler
|
auto handler
|
||||||
{
|
{
|
||||||
std::bind(&link::handle_open, this, ph::_1)
|
std::bind(&link::handle_open, this, ph::_1)
|
||||||
|
|
Loading…
Reference in a new issue