diff options
Diffstat (limited to 'src/DHTPingTask.cc')
| -rw-r--r-- | src/DHTPingTask.cc | 8 |
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); } } |
