diff options
Diffstat (limited to 'Swiften/Queries/Request.cpp')
| -rw-r--r-- | Swiften/Queries/Request.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Swiften/Queries/Request.cpp b/Swiften/Queries/Request.cpp index 18446ae..ce9f763 100644 --- a/Swiften/Queries/Request.cpp +++ b/Swiften/Queries/Request.cpp @@ -35,14 +35,19 @@ bool Request::handleIQ(boost::shared_ptr<IQ> iq) { bool handled = false; if (sent_ && iq->getID() == id_) { if (iq->getType() == IQ::Result) { handleResponse(iq->getPayloadOfSameType(payload_), boost::optional<ErrorPayload>()); } else { - // FIXME: Get proper error - handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(ErrorPayload::UndefinedCondition)); + boost::shared_ptr<ErrorPayload> errorPayload = iq->getPayload<ErrorPayload>(); + if (errorPayload) { + handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(*errorPayload)); + } + else { + handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(ErrorPayload::UndefinedCondition)); + } } router_->removeHandler(this); handled = true; } return handled; } |
Swift