X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter%2Fcodec%2FMessage.cpp;h=2726992f01fdcdaf263d91c851a6f924b76ff265;hb=7b40224bccc5d695c2977022b92e94715464c395;hp=5f21bb2cf6376a7d603d517a4d979e4373d271ee;hpb=93366a0bda79e6fd6e7dad6316bfcf8cc82f5731;p=anna.git diff --git a/source/diameter/codec/Message.cpp b/source/diameter/codec/Message.cpp index 5f21bb2..2726992 100644 --- a/source/diameter/codec/Message.cpp +++ b/source/diameter/codec/Message.cpp @@ -82,7 +82,11 @@ Message::~Message() { //--------------------------------------------------------- Message::getEngine() //------------------------------------------------------------------------------ Engine * Message::getEngine() const throw(anna::RuntimeException) { - return a_engine ? a_engine : (a_engine = anna::functions::component (ANNA_FILE_LOCATION)); + if(!a_engine) + throw anna::RuntimeException("Invalid codec engine reference (NULL)", ANNA_FILE_LOCATION); + + return a_engine; + } @@ -90,7 +94,6 @@ Engine * Message::getEngine() const throw(anna::RuntimeException) { //-------------------------------------------------------- Message::initialize() //------------------------------------------------------------------------------ void Message::initialize() throw() { - a_engine = NULL; a_version = 1; a_id = CommandId(0, false); a_flags = 0x00; @@ -363,7 +366,7 @@ void Message::decode(const anna::DataBlock &db, Message *ptrAnswer) throw(anna:: while(avpPos < dataBytes) { try { - avp = getEngine()->allocateAvp(); + avp = getEngine()->createAvp(NULL); db_aux.assign(startData + avpPos, dataBytes - avpPos /* is valid to pass total length (indeed i don't know the real avp length) because it will be limited and this has deep copy disabled (no memory is reserved) */); avp -> decode(db_aux, parent, answer); } catch(anna::RuntimeException &ex) { @@ -888,7 +891,7 @@ void Message::fromXML(const anna::xml::Node* messageNode) throw(anna::RuntimeExc } try { - avp = getEngine()->allocateAvp(); + avp = getEngine()->createAvp(NULL); avp -> fromXML(*it); } catch(anna::RuntimeException &ex) { getEngine()->releaseAvp(avp);