diff options
-rw-r--r-- | Swiften/Client/ClientBlockListManager.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Swiften/Client/ClientBlockListManager.cpp b/Swiften/Client/ClientBlockListManager.cpp index d446315..de43631 100644 --- a/Swiften/Client/ClientBlockListManager.cpp +++ b/Swiften/Client/ClientBlockListManager.cpp @@ -93,42 +93,46 @@ boost::shared_ptr<BlockList> ClientBlockListManager::requestBlockList() { getRequest->onResponse.connect(boost::bind(&ClientBlockListManager::handleBlockListReceived, this, _1, _2)); getRequest->send(); return blockList; } GenericRequest<BlockPayload>::ref ClientBlockListManager::createBlockJIDRequest(const JID& jid) { return createBlockJIDsRequest(std::vector<JID>(1, jid)); } GenericRequest<BlockPayload>::ref ClientBlockListManager::createBlockJIDsRequest(const std::vector<JID>& jids) { boost::shared_ptr<BlockPayload> payload = boost::make_shared<BlockPayload>(jids); return boost::make_shared< GenericRequest<BlockPayload> >(IQ::Set, JID(), payload, iqRouter); } GenericRequest<UnblockPayload>::ref ClientBlockListManager::createUnblockJIDRequest(const JID& jid) { return createUnblockJIDsRequest(std::vector<JID>(1, jid)); } GenericRequest<UnblockPayload>::ref ClientBlockListManager::createUnblockJIDsRequest(const std::vector<JID>& jids) { boost::shared_ptr<UnblockPayload> payload = boost::make_shared<UnblockPayload>(jids); return boost::make_shared< GenericRequest<UnblockPayload> >(IQ::Set, JID(), payload, iqRouter); } GenericRequest<UnblockPayload>::ref ClientBlockListManager::createUnblockAllRequest() { return createUnblockJIDsRequest(std::vector<JID>()); } void ClientBlockListManager::handleBlockListReceived(boost::shared_ptr<BlockListPayload> payload, ErrorPayload::ref error) { if (error || !payload) { blockList->setState(BlockList::Error); } else { blockList->setItems(payload->getItems()); blockList->setState(BlockList::Available); - blockResponder = boost::make_shared<BlockResponder>(blockList, iqRouter); - blockResponder->start(); - unblockResponder = boost::make_shared<UnblockResponder>(blockList, iqRouter); - unblockResponder->start(); + if (!blockResponder) { + blockResponder = boost::make_shared<BlockResponder>(blockList, iqRouter); + blockResponder->start(); + } + if (!unblockResponder) { + unblockResponder = boost::make_shared<UnblockResponder>(blockList, iqRouter); + unblockResponder->start(); + } } } |