summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp')
-rw-r--r--Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp
index e3bfd54..954b885 100644
--- a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp
+++ b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp
@@ -7,8 +7,9 @@
#include <Swiften/Serializer/PayloadSerializers/ErrorSerializer.h>
#include <Swiften/Serializer/XML/XMLTextNode.h>
+#include <Swiften/Serializer/PayloadSerializerCollection.h>
namespace Swift {
-ErrorSerializer::ErrorSerializer() : GenericPayloadSerializer<ErrorPayload>() {
+ErrorSerializer::ErrorSerializer(PayloadSerializerCollection* serializers) : GenericPayloadSerializer<ErrorPayload>(), serializers(serializers) {
}
@@ -20,5 +21,5 @@ std::string ErrorSerializer::serializePayload(boost::shared_ptr<ErrorPayload> er
case ErrorPayload::Auth: result += "auth"; break;
case ErrorPayload::Wait: result += "wait"; break;
- default: result += "cancel"; break;
+ case ErrorPayload::Cancel: result += "cancel"; break;
}
result += "\">";
@@ -47,5 +48,5 @@ std::string ErrorSerializer::serializePayload(boost::shared_ptr<ErrorPayload> er
case ErrorPayload::SubscriptionRequired: conditionElement = "subscription-required"; break;
case ErrorPayload::UnexpectedRequest: conditionElement = "unexpected-request"; break;
- default: conditionElement = "undefined-condition"; break;
+ case ErrorPayload::UndefinedCondition: conditionElement = "undefined-condition"; break;
}
result += "<" + conditionElement + " xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>";
@@ -56,4 +57,11 @@ std::string ErrorSerializer::serializePayload(boost::shared_ptr<ErrorPayload> er
}
+ if (error->getPayload()) {
+ PayloadSerializer* serializer = serializers->getPayloadSerializer(error->getPayload());
+ if (serializer) {
+ result += serializer->serialize(error->getPayload());
+ }
+ }
+
result += "</error>";
return result;