summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker')
-rw-r--r--cpp/src/qpid/broker/Timer.cpp12
-rw-r--r--cpp/src/qpid/broker/Timer.h1
2 files changed, 4 insertions, 9 deletions
diff --git a/cpp/src/qpid/broker/Timer.cpp b/cpp/src/qpid/broker/Timer.cpp
index 28b1aa56d7..173f350cde 100644
--- a/cpp/src/qpid/broker/Timer.cpp
+++ b/cpp/src/qpid/broker/Timer.cpp
@@ -85,17 +85,13 @@ void Timer::start()
void Timer::stop()
{
- signalStop();
- runner.join();
-}
-
-void Timer::signalStop()
-{
- Monitor::ScopedLock l(monitor);
- if (active) {
+ {
+ Monitor::ScopedLock l(monitor);
+ if (!active) return;
active = false;
monitor.notifyAll();
}
+ runner.join();
}
bool Later::operator()(const intrusive_ptr<TimerTask>& a,
diff --git a/cpp/src/qpid/broker/Timer.h b/cpp/src/qpid/broker/Timer.h
index d1f606f326..dcb02a5e0a 100644
--- a/cpp/src/qpid/broker/Timer.h
+++ b/cpp/src/qpid/broker/Timer.h
@@ -59,7 +59,6 @@ class Timer : private qpid::sys::Runnable {
bool active;
virtual void run();
- void signalStop();
public:
Timer();