X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter%2Fcodec%2FMessage.cpp;h=0cf70cd31a66e81323da9160b4b2d70123f4019b;hb=227446df961ead723c8f2b04ea53d99c770a438f;hp=0b4d8020c35975069de180a998a3dfa1b24fbd23;hpb=c9a91acd707f39fb11d9d513d904cb1f6db52386;p=anna.git diff --git a/source/diameter/codec/Message.cpp b/source/diameter/codec/Message.cpp index 0b4d802..0cf70cd 100644 --- a/source/diameter/codec/Message.cpp +++ b/source/diameter/codec/Message.cpp @@ -557,6 +557,8 @@ void Message::setStandardToAnswer(const Message &request, const std::string &ori // Session-Id if exists: const Avp *reqSessionId = request.getAvp(helpers::base::AVPID__Session_Id, 1, anna::Exception::Mode::Ignore); + LOGDEBUG(anna::Logger::debug("Check answer message AVPs Session-Id, Origin-Host and Origin-Realm => replace them if missing, with request session-id & node configuration:", ANNA_FILE_LOCATION)); + if(reqSessionId) if(!getAvp(helpers::base::AVPID__Session_Id, 1, anna::Exception::Mode::Ignore)) addAvp(helpers::base::AVPID__Session_Id)->getUTF8String()->setValue(reqSessionId->getUTF8String()->getValue()); @@ -759,15 +761,25 @@ const anna::DataBlock & Message::code() throw(anna::RuntimeException) { } //------------------------------------------------------------------------------ -//----------------------------------------------------------- Message::loadXML() +//------------------------------------------------------- Message::loadXMLFile() //------------------------------------------------------------------------------ -void Message::loadXML(const std::string &xmlPathFile) throw(anna::RuntimeException) { +void Message::loadXMLFile(const std::string &xmlPathFile) throw(anna::RuntimeException) { anna::xml::DocumentFile xmlDocument; anna::diameter::codec::functions::messageXmlDocumentFromXmlFile(xmlDocument, xmlPathFile); fromXML(xmlDocument.getRootNode()); } +//------------------------------------------------------------------------------ +//----------------------------------------------------- Message::loadXMLString() +//------------------------------------------------------------------------------ +void Message::loadXMLString(const std::string &xmlString) throw(anna::RuntimeException) { + + anna::xml::DocumentMemory xmlDocument; + anna::diameter::codec::functions::messageXmlDocumentFromXmlString(xmlDocument, xmlString); + fromXML(xmlDocument.getRootNode()); +} + //------------------------------------------------------------------------------ //----------------------------------------------------------- Message::fromXML() //------------------------------------------------------------------------------ @@ -986,9 +998,11 @@ anna::xml::Node* Message::asXML(anna::xml::Node* parent) const throw() { //------------------------------------------------------------------------------ //------------------------------------------------------- Message::asXMLString() //------------------------------------------------------------------------------ -std::string Message::asXMLString() const throw() { +std::string Message::asXMLString(bool sortAttributes) const throw() { anna::xml::Node root("root"); - return anna::xml::Compiler().apply(asXML(&root)); + + anna::xml::Compiler::Mode::_v mode = sortAttributes ? anna::xml::Compiler::Mode::Sort : anna::xml::Compiler::Mode::Visual; + return anna::xml::Compiler().apply(asXML(&root), mode); }