diff --git a/src/storageresponder.cpp b/src/storageresponder.cpp index 84423593ea045ad3249fc3edeeb740a8b4df94b7..b5f4e5aabe99d293521e417382dad4c361d132cc 100644 --- a/src/storageresponder.cpp +++ b/src/storageresponder.cpp @@ -71,11 +71,19 @@ bool StorageResponder::handleSetRequest(const Swift::JID& from, const Swift::JID return true; } - StorageSerializer serializer; - std::string value = serializer.serializePayload(boost::dynamic_pointer_cast(payload->getPayload())); - m_storageBackend->updateUserSetting(user->getUserInfo().id, "storage", value); - LOG4CXX_INFO(logger, from.toBare().toString() << ": Storing jabber:iq:storage"); - sendResponse(from, id, boost::shared_ptr()); + boost::shared_ptr storage = boost::dynamic_pointer_cast(payload->getPayload()); + + if (storage) { + StorageSerializer serializer; + std::string value = serializer.serializePayload(boost::dynamic_pointer_cast(payload->getPayload())); + m_storageBackend->updateUserSetting(user->getUserInfo().id, "storage", value); + LOG4CXX_INFO(logger, from.toBare().toString() << ": Storing jabber:iq:storage"); + sendResponse(from, id, boost::shared_ptr()); + } + else { + LOG4CXX_INFO(logger, from.toBare().toString() << ": Unknown element. Libtransport does not support serialization of this."); + sendError(from, id, ErrorPayload::NotAcceptable, ErrorPayload::Cancel); + } return true; }