const struct timeval timeout{
g_networkTimeoutMsec / 1000, static_cast<suseconds_t>(g_networkTimeoutMsec) % 1000 * 1000};
- Socket s(remote.sin4.sin_family, SOCK_STREAM);
- s.setNonBlocking();
- setTCPNoDelay(s.getHandle());
+ Socket sock(remote.sin4.sin_family, SOCK_STREAM);
+ sock.setNonBlocking();
+ setTCPNoDelay(sock.getHandle());
ComboAddress localip = localBind ? *localBind : pdns::getQueryLocalAddress(remote.sin4.sin_family, 0);
if (localBind) {
VLOG(log, "Connecting TCP to " << remote.toString() << " with specific local address " << localip.toString() << endl);
}
try {
- s.bind(localip);
+ sock.bind(localip);
}
catch (const NetworkError& e) {
if (localBind) {
dnsOverTLS = false;
}
}
- connection.d_handler = std::make_shared<TCPIOHandler>(nsName, false, s.releaseHandle(), timeout, tlsCtx);
+ connection.d_handler = std::make_shared<TCPIOHandler>(nsName, false, sock.releaseHandle(), timeout, tlsCtx);
connection.d_local = localBind;
// Returned state ignored
// This can throw an exception, retry will need to happen at higher level
using pair_t = std::pair<ComboAddress, std::optional<ComboAddress>>;
void store(const struct timeval& now, const pair_t& pair, Connection&& connection);
- Connection get(const pair_t& remoteAddress);
+ Connection get(const pair_t& pair);
void cleanup(const struct timeval& now);
[[nodiscard]] size_t size() const
if (resolveret != LWResult::Result::Success) {
/* Error while resolving */
- if (resolveret == LWResult::Result::Timeout) {
+ switch (resolveret) {
+ case LWResult::Result::Timeout:
LOG(prefix << qname << ": Timeout resolving after " << lwr.d_usec / 1000.0 << " ms " << (doTCP ? "over TCP" : "") << endl);
incTimeoutStats(remoteIP);
- }
- else if (resolveret == LWResult::Result::OSLimitError) {
+ break;
+ case LWResult::Result::OSLimitError:
/* OS resource limit reached */
LOG(prefix << qname << ": Hit a local resource limit resolving" << (doTCP ? " over TCP" : "") << ", probable error: " << stringerror() << endl);
t_Counters.at(rec::Counter::resourceLimits)++;
- }
- else if (resolveret == LWResult::Result::ChainLimitError) {
+ break;
+ case LWResult::Result::ChainLimitError:
/* Chain resource limit reached */
LOG(prefix << qname << ": Hit a chain limit resolving" << (doTCP ? " over TCP" : ""));
t_Counters.at(rec::Counter::chainLimits)++;
- }
- else {
+ break;
+ default:
/* LWResult::Result::PermanentError */
t_Counters.at(rec::Counter::unreachables)++;
d_unreachables++;
// XXX questionable use of errno
LOG(prefix << qname << ": Error resolving from " << remoteIP.toString() << (doTCP ? " over TCP" : "") << ", possible error: " << stringerror() << endl);
+ break;
}
// don't account for resource limits, they are our own fault