]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Set `RemoteLogger::d_socket` to -1 after closing it 4806/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 12 Dec 2016 11:20:32 +0000 (12:20 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 22 Dec 2016 09:30:58 +0000 (10:30 +0100)
Otherwise, in the unlikely case `SSocket()` throws an exception
we might end up with a stale file descriptor in `RemoteLogger::reconnect()`.

(cherry picked from commit 754f300f6b7e64b8de70990950484c4de749d10a)

pdns/remote_logger.cc

index 39844ab465ddecf6bbb60f1382b090afd9e65762..26ebb33c7efa414893259c8618e5aa984f4ca1ba 100644 (file)
@@ -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();
 }