aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2013-06-15 07:40:35 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2013-06-15 07:40:35 -0700
commitf5442aeef4547f013b3edec54774410507704bc6 (patch)
treeaa86f7f30acde89bb9dd63046d499c2128188903
parent9e3a5deaa3f66ff9176ade578a6f5cf19da789ab (diff)
parente2654c8d280fbe77920960009f337d3f3c6772b6 (diff)
Merge pull request #2766 from theuni/fix-shutdown-deadlock
Fix shutdown deadlock, ticket #2690
-rw-r--r--src/util.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/util.h b/src/util.h
index 2272ed02f4..9173b5bb58 100644
--- a/src/util.h
+++ b/src/util.h
@@ -20,6 +20,7 @@
#include <vector>
#include <string>
+#include <boost/version.hpp>
#include <boost/thread.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/path.hpp>
@@ -104,7 +105,11 @@ T* alignup(T* p)
inline void MilliSleep(int64 n)
{
-#if BOOST_VERSION >= 105000
+// Boost's sleep_for was uninterruptable when backed by nanosleep from 1.50
+// until fixed in 1.52. Use the deprecated sleep method for the broken case.
+// See: https://svn.boost.org/trac/boost/ticket/7238
+
+#if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
boost::this_thread::sleep_for(boost::chrono::milliseconds(n));
#else
boost::this_thread::sleep(boost::posix_time::milliseconds(n));