summaryrefslogtreecommitdiff
path: root/src/DHTPingTask.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DHTPingTask.cc')
-rw-r--r--src/DHTPingTask.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/DHTPingTask.cc b/src/DHTPingTask.cc
index 4eb03025..c7ab1049 100644
--- a/src/DHTPingTask.cc
+++ b/src/DHTPingTask.cc
@@ -55,7 +55,9 @@ DHTPingTask::~DHTPingTask() {}
void DHTPingTask::startup()
{
SharedHandle<DHTMessage> m = _factory->createPingMessage(_remoteNode);
- _dispatcher->addMessageToQueue(m, _timeout, new DHTMessageCallbackImpl(this));
+ WeakHandle<DHTMessageCallbackListener> listener(this);
+ SharedHandle<DHTMessageCallback> callback(new DHTMessageCallbackImpl(listener));
+ _dispatcher->addMessageToQueue(m, _timeout, callback);
}
void DHTPingTask::onReceived(const SharedHandle<DHTMessage>& message)
@@ -72,7 +74,9 @@ void DHTPingTask::onTimeout(const SharedHandle<DHTNode>& node)
_finished = true;
} else {
SharedHandle<DHTMessage> m = _factory->createPingMessage(_remoteNode);
- _dispatcher->addMessageToQueue(m, _timeout, new DHTMessageCallbackImpl(this));
+ WeakHandle<DHTMessageCallbackListener> listener(this);
+ SharedHandle<DHTMessageCallback> callback(new DHTMessageCallbackImpl(listener));
+ _dispatcher->addMessageToQueue(m, _timeout, callback);
}
}