diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-06-12 10:26:41 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-06-12 10:26:41 (GMT) |
commit | 9bc8ddaf40d73647944592385bf56ece41046846 (patch) | |
tree | 200c49a14f60754050af71922234d4aadb991bd1 /Swiften/Queries/Request.cpp | |
parent | eded58915fd89e8b008ba7e078c5967fdef9f4cb (diff) | |
download | swift-contrib-9bc8ddaf40d73647944592385bf56ece41046846.zip swift-contrib-9bc8ddaf40d73647944592385bf56ece41046846.tar.bz2 |
Removing auto delete stuff from Request.
This should now be handled properly by using shared_ptrs.
Diffstat (limited to 'Swiften/Queries/Request.cpp')
-rw-r--r-- | Swiften/Queries/Request.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Swiften/Queries/Request.cpp b/Swiften/Queries/Request.cpp index a788e91..4235c6f 100644 --- a/Swiften/Queries/Request.cpp +++ b/Swiften/Queries/Request.cpp @@ -4,7 +4,7 @@ namespace Swift { -Request::Request(IQ::Type type, const JID& receiver, boost::shared_ptr<Payload> payload, IQRouter* router, AutoDeleteBehavior autoDeleteBehavior) : router_(router), type_(type), receiver_(receiver), payload_(payload), autoDeleteBehavior_(autoDeleteBehavior), sent_(false) { +Request::Request(IQ::Type type, const JID& receiver, boost::shared_ptr<Payload> payload, IQRouter* router) : router_(router), type_(type), receiver_(receiver), payload_(payload), sent_(false) { } void Request::send() { @@ -16,7 +16,14 @@ void Request::send() { iq->addPayload(payload_); id_ = router_->getNewIQID(); iq->setID(id_); - router_->addHandler(this); + + try { + router_->addHandler(shared_from_this()); + } + catch (const std::exception&) { + router_->addHandler(this); + } + router_->sendIQ(iq); } @@ -31,9 +38,6 @@ bool Request::handleIQ(boost::shared_ptr<IQ> iq) { handleResponse(boost::shared_ptr<Payload>(), boost::optional<Error>(Error::UndefinedCondition)); } router_->removeHandler(this); - if (autoDeleteBehavior_ == AutoDeleteAfterResponse) { - MainEventLoop::deleteLater(this); - } handled = true; } return handled; |