diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-08-26 20:26:31 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-08-26 20:26:31 (GMT) |
commit | 8da2a30bab8640944de750abd1ba26f8543f12ca (patch) | |
tree | d9bee43984ca6c86250a774b71927d3975cead26 /Swiften/Queries/Request.cpp | |
parent | 6a9fde79c23e8108d2ca19deba4d5e9082917888 (diff) | |
parent | 9a80a4b67f8fd86b3a2f5bccef3c0cd59dd83d75 (diff) | |
download | swift-contrib-8da2a30bab8640944de750abd1ba26f8543f12ca.zip swift-contrib-8da2a30bab8640944de750abd1ba26f8543f12ca.tar.bz2 |
Merge branch 'swift-1.x'
* swift-1.x:
Don't consider Get and Set requests as Response results.
Diffstat (limited to 'Swiften/Queries/Request.cpp')
-rw-r--r-- | Swiften/Queries/Request.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/Swiften/Queries/Request.cpp b/Swiften/Queries/Request.cpp index 7adf13c..359c6a6 100644 --- a/Swiften/Queries/Request.cpp +++ b/Swiften/Queries/Request.cpp @@ -39,25 +39,27 @@ void Request::send() { bool Request::handleIQ(boost::shared_ptr<IQ> iq) { bool handled = false; - if (sent_ && iq->getID() == id_) { - if (iq->getType() == IQ::Result) { - boost::shared_ptr<Payload> payload = iq->getPayloadOfSameType(payload_); - if (!payload && boost::dynamic_pointer_cast<RawXMLPayload>(payload_) && !iq->getPayloads().empty()) { - payload = iq->getPayloads().front(); - } - handleResponse(payload, ErrorPayload::ref()); - } - else { - ErrorPayload::ref errorPayload = iq->getPayload<ErrorPayload>(); - if (errorPayload) { - handleResponse(boost::shared_ptr<Payload>(), errorPayload); + if (iq->getType() == IQ::Result || iq->getType() == IQ::Error) { + if (sent_ && iq->getID() == id_) { + if (iq->getType() == IQ::Result) { + boost::shared_ptr<Payload> payload = iq->getPayloadOfSameType(payload_); + if (!payload && boost::dynamic_pointer_cast<RawXMLPayload>(payload_) && !iq->getPayloads().empty()) { + payload = iq->getPayloads().front(); + } + handleResponse(payload, ErrorPayload::ref()); } else { - handleResponse(boost::shared_ptr<Payload>(), ErrorPayload::ref(new ErrorPayload(ErrorPayload::UndefinedCondition))); + ErrorPayload::ref errorPayload = iq->getPayload<ErrorPayload>(); + if (errorPayload) { + handleResponse(boost::shared_ptr<Payload>(), errorPayload); + } + else { + handleResponse(boost::shared_ptr<Payload>(), ErrorPayload::ref(new ErrorPayload(ErrorPayload::UndefinedCondition))); + } } + router_->removeHandler(this); + handled = true; } - router_->removeHandler(this); - handled = true; } return handled; } |