From fcf71118726fa698a5ce44c1d5b4f6f648dae9a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Thu, 29 Mar 2018 11:56:44 -0400
Subject: [PATCH] scheduler: avoid possible overflow with buggy stdlib

---
 src/dhtrunner.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp
index adeb5a06..afb17efb 100644
--- a/src/dhtrunner.cpp
+++ b/src/dhtrunner.cpp
@@ -120,7 +120,8 @@ DhtRunner::run(const SockAddr& local4, const SockAddr& local6, DhtRunner::Config
             } catch (const dht::SocketException& e) {
                 startNetwork(local4, local6);
             }
-            cv.wait_until(lk, wakeup, [this]() {
+
+            auto hasJobToDo = [this]() {
                 if (not running)
                     return true;
                 {
@@ -137,7 +138,11 @@ DhtRunner::run(const SockAddr& local4, const SockAddr& local6, DhtRunner::Config
                         return true;
                 }
                 return false;
-            });
+            };
+            if (wakeup == time_point::max())
+                cv.wait(lk, hasJobToDo);
+            else
+                cv.wait_until(lk, wakeup, hasJobToDo);
         }
     });
 }
-- 
GitLab