resolver.d_slog = resolver.d_slog->withValues("qname", Logging::Loggable(comboWriter->d_mdp.d_qname),
"qtype", Logging::Loggable(QType(comboWriter->d_mdp.d_qtype)),
- "remote", Logging::Loggable(comboWriter->getRemote()),
+ "remote", Logging::Loggable(comboWriter->d_remote),
+ "source", Logging::Loggable(comboWriter->d_source),
"proto", Logging::Loggable(comboWriter->d_tcp ? "tcp" : "udp"),
"ecs", Logging::Loggable(comboWriter->d_ednssubnet.getSource().empty() ? "" : comboWriter->d_ednssubnet.getSource().toString()),
"mtid", Logging::Loggable(g_multiTasker->getTid()));
}
}
else {
- bool hadError = sendResponseOverTCP(comboWriter, packet);
+ bool hadError = sendResponseOverTCP(comboWriter, packet, g_slogtcpin);
finishTCPReply(comboWriter, hadError, true);
tcpGuard.setHandled();
}
else if (dnsheader->opcode != static_cast<unsigned>(Opcode::Query) && dnsheader->opcode != static_cast<unsigned>(Opcode::Notify)) {
t_Counters.at(rec::Counter::ignoredCount)++;
if (g_logCommonErrors) {
- g_slogudpin->info(Logr::Error, "Ignoring unsupported opcode server socket", "remote", Logging::Loggable(fromaddr), "opcode", Logging::Loggable(Opcode::to_s(dnsheader->opcode)));
+ g_slogudpin->info(Logr::Error, "Ignoring unsupported opcode on server socket", "remote", Logging::Loggable(fromaddr), "opcode", Logging::Loggable(Opcode::to_s(dnsheader->opcode)));
}
}
else if (dnsheader->qdcount == 0U) {
d_socket = sock;
}
- // get a string representation of the client address, including proxy info if applicable
- string getRemote() const
- {
- if (d_source == d_remote) {
- return d_source.toStringWithPort();
- }
- return d_source.toStringWithPort() + " (proxied by " + d_remote.toStringWithPort() + ")";
- }
-
std::vector<ProxyProtocolValue> d_proxyProtocolValues;
MOADNSParser d_mdp;
struct timeval d_now;
/* this function is called with both a string and a vector<uint8_t> representing a packet */
template <class T>
-static bool sendResponseOverTCP(const std::unique_ptr<DNSComboWriter>& comboWriter, const T& packet)
+static bool sendResponseOverTCP(const std::unique_ptr<DNSComboWriter>& comboWriter, const T& packet, Logr::log_t log)
{
std::array<uint8_t, 2> buf{};
buf[0] = packet.size() / 256;
bool hadError = true;
if (wret == 0) {
- g_log << Logger::Warning << "EOF writing TCP answer to " << comboWriter->getRemote() << endl;
+ log->info(Logr::Warning, "EOF writing TCP answer", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source));
}
else if (wret < 0) {
int err = errno;
- g_log << Logger::Warning << "Error writing TCP answer to " << comboWriter->getRemote() << ": " << stringerror(err) << endl;
+ log->error(Logr::Warning, err, "Error writing TCP", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source));
}
else if ((unsigned int)wret != 2 + packet.size()) {
- g_log << Logger::Warning << "Oops, partial answer sent to " << comboWriter->getRemote() << " for " << comboWriter->d_mdp.d_qname << " (size=" << (2 + packet.size()) << ", sent " << wret << ")" << endl;
+ log->info(Logr::Warning, "Partial answer sent", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source), "size", Logging::Loggable(2 + packet.size()), "sent", Logging::Loggable(wret));
}
else {
hadError = false;
header.cd = comboWriter->d_mdp.d_header.cd;
header.rcode = rcode;
- sendResponseOverTCP(comboWriter, packet);
+ sendResponseOverTCP(comboWriter, packet, g_slogtcpin);
}
void finishTCPReply(std::unique_ptr<DNSComboWriter>& comboWriter, bool hadError, bool updateInFlight)
if (comboWriter->d_mdp.d_header.qr) {
t_Counters.at(rec::Counter::ignoredCount)++;
if (g_logCommonErrors) {
- g_slogtcpin->info(Logr::Error, "Ignoring answer from TCP client on server socket", "remote", Logging::Loggable(comboWriter->getRemote()));
+ g_slogtcpin->info(Logr::Error, "Ignoring answer from TCP client on server socket", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source));
}
return;
}
if (comboWriter->d_mdp.d_header.opcode != static_cast<unsigned>(Opcode::Query) && comboWriter->d_mdp.d_header.opcode != static_cast<unsigned>(Opcode::Notify)) {
t_Counters.at(rec::Counter::ignoredCount)++;
if (g_logCommonErrors) {
- g_slogtcpin->info(Logr::Error, "Ignoring unsupported opcode from TCP client", "remote", Logging::Loggable(comboWriter->getRemote()), "opcode", Logging::Loggable(Opcode::to_s(comboWriter->d_mdp.d_header.opcode)));
+ g_slogtcpin->info(Logr::Error, "Ignoring unsupported opcode from TCP client", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source), "opcode", Logging::Loggable(Opcode::to_s(comboWriter->d_mdp.d_header.opcode)));
}
sendErrorOverTCP(comboWriter, RCode::NotImp);
tcpGuard.keep();
if (dnsheader->qdcount == 0U) {
t_Counters.at(rec::Counter::emptyQueriesCount)++;
if (g_logCommonErrors) {
- g_slogtcpin->info(Logr::Error, "Ignoring empty (qdcount == 0) query on server socket", "remote", Logging::Loggable(comboWriter->getRemote()));
+ g_slogtcpin->info(Logr::Error, "Ignoring empty (qdcount == 0) query on server socket", "remote", Logging::Loggable(comboWriter->d_remote), "source", Logging::Loggable(comboWriter->d_source));
}
sendErrorOverTCP(comboWriter, RCode::NotImp);
tcpGuard.keep();
}
auto answerMatch = comboWriter->d_eventTrace.add(RecEventTrace::AnswerSent);
- bool hadError = sendResponseOverTCP(comboWriter, response);
+ bool hadError = sendResponseOverTCP(comboWriter, response, g_slogtcpin);
finishTCPReply(comboWriter, hadError, false);
struct timeval now{};
Utility::gettimeofday(&now, nullptr);