From 754f300f6b7e64b8de70990950484c4de749d10a Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Mon, 12 Dec 2016 12:20:32 +0100 Subject: [PATCH] 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()`. --- pdns/remote_logger.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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(); } -- 2.47.2