From: Remi Gacogne Date: Mon, 12 Dec 2016 11:20:32 +0000 (+0100) Subject: Set `RemoteLogger::d_socket` to -1 after closing it X-Git-Tag: dnsdist-1.1.0-beta2~5^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F4760%2Fhead;p=thirdparty%2Fpdns.git Set `RemoteLogger::d_socket` to -1 after closing it Otherwise, in the unlikely case `SSocket()` throws an exception we might end up with a stale file descriptor in `RemoteLogger::reconnect()`. --- diff --git a/pdns/remote_logger.cc b/pdns/remote_logger.cc index 39844ab465..26ebb33c7e 100644 --- a/pdns/remote_logger.cc +++ b/pdns/remote_logger.cc @@ -12,6 +12,7 @@ bool RemoteLogger::reconnect() { if (d_socket >= 0) { close(d_socket); + d_socket = -1; } try { d_socket = SSocket(d_remote.sin4.sin_family, SOCK_STREAM, 0); @@ -115,8 +116,10 @@ RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t timeout, uint64_ RemoteLogger::~RemoteLogger() { d_exiting = true; - if (d_socket >= 0) + if (d_socket >= 0) { close(d_socket); + d_socket = -1; + } d_queueCond.notify_one(); d_thread.join(); }