]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Shorten lock duration in `RemoteLoggerPool::queueData`
authorEnsar Sarajčić <dev@ensarsarajcic.com>
Thu, 6 Feb 2025 08:50:00 +0000 (09:50 +0100)
committerEnsar Sarajčić <dev@ensarsarajcic.com>
Thu, 6 Feb 2025 08:50:00 +0000 (09:50 +0100)
pdns/remote_logger_pool.cc

index b1b2bde611be329b2d42b5f2a65ff78e776593d4..8e1c2685417a156894c6875de5034ecec38c780d 100644 (file)
@@ -27,11 +27,14 @@ RemoteLoggerPool::RemoteLoggerPool(std::vector<std::shared_ptr<RemoteLoggerInter
 
 RemoteLoggerInterface::Result RemoteLoggerPool::queueData(const std::string& data)
 {
-  auto pool_it = d_pool_it.lock();
-  auto result = (**pool_it)->queueData(data);
-  (*pool_it)++;
-  if (*pool_it == d_pool.end()) {
-    *pool_it = d_pool.begin();
+  std::shared_ptr<RemoteLoggerInterface> logger;
+  {
+    auto pool_it = d_pool_it.lock();
+    logger = **pool_it;
+    (*pool_it)++;
+    if (*pool_it == d_pool.end()) {
+      *pool_it = d_pool.begin();
+    }
   }
-  return result;
+  return logger->queueData(data);
 }