From: Remi Gacogne Date: Mon, 9 May 2016 08:09:28 +0000 (+0200) Subject: dnsdist: In verbose mode, warn if `sendto()`/`sendfromto()` failed X-Git-Tag: rec-4.0.0-alpha3~3^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20b019fa91c630ec7995dac0789392b246ad2d3d;p=pdns dnsdist: In verbose mode, warn if `sendto()`/`sendfromto()` failed --- diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 750e65a6b..b21112bd7 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -144,10 +144,17 @@ struct DelayedPacket ComboAddress origDest; void operator()() { - if(origDest.sin4.sin_family == 0) - sendto(fd, packet.c_str(), packet.size(), 0, (struct sockaddr*)&destination, destination.getSocklen()); - else - sendfromto(fd, packet.c_str(), packet.size(), 0, origDest, destination); + ssize_t res; + if(origDest.sin4.sin_family == 0) { + res = sendto(fd, packet.c_str(), packet.size(), 0, (struct sockaddr*)&destination, destination.getSocklen()); + } + else { + res = sendfromto(fd, packet.c_str(), packet.size(), 0, origDest, destination); + } + if (res == -1) { + int err = errno; + vinfolog("Error sending delayed response to %s: %s", destination.toStringWithPort(), strerror(err)); + } } }; @@ -313,10 +320,17 @@ static bool sendUDPResponse(int origFD, char* response, uint16_t responseLen, in g_delay->submit(dp, delayMsec); } else { - if(origDest.sin4.sin_family == 0) - sendto(origFD, response, responseLen, 0, (struct sockaddr*)&origRemote, origRemote.getSocklen()); - else - sendfromto(origFD, response, responseLen, 0, origDest, origRemote); + ssize_t res; + if(origDest.sin4.sin_family == 0) { + res = sendto(origFD, response, responseLen, 0, (struct sockaddr*)&origRemote, origRemote.getSocklen()); + } + else { + res = sendfromto(origFD, response, responseLen, 0, origDest, origRemote); + } + if (res == -1) { + int err = errno; + vinfolog("Error sending response to %s: %s", origRemote.toStringWithPort(), strerror(err)); + } } return true;