From b78d5c95b731a6eb6288a556fba2ad4094c46fa9 Mon Sep 17 00:00:00 2001 From: Eduardo Ramos Testillano Date: Tue, 6 Oct 2015 20:17:19 +0200 Subject: [PATCH] Fix problem with incremental services loading --- example/diameter/launcher/Launcher.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/example/diameter/launcher/Launcher.cpp b/example/diameter/launcher/Launcher.cpp index fbced4a..5ee3466 100644 --- a/example/diameter/launcher/Launcher.cpp +++ b/example/diameter/launcher/Launcher.cpp @@ -159,7 +159,6 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool eventOp anna::diameter::comm::ApplicationMessageOamModule & appMsgOamModule = anna::diameter::comm::ApplicationMessageOamModule::instantiate(); appMsgOamModule.enableCounters(); // this special module is disabled by default (the only) static int scope_id = 3; - bool id_0_registered = false; unsigned int id_value; std::string codecEngineName; @@ -185,10 +184,7 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool eventOp throw ex; } - if (id_value == 0) { - id_0_registered = true; - bpd = d; - } + bpd = d; // base protocol dictionary in case of monostack. If multistack, will be calculated later // Create codec engine and register it in the codec engine manager: codecEngineName = anna::functions::asString("CodecEngineForStackId_%llu", id_value); @@ -236,14 +232,10 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool eventOp // Basic checking for multistack: bool multistack = (stackEngine.stack_size() > 1); if (multistack) { - if(!id_0_registered) + bpd = stackEngine.getDictionary(0); + if(!bpd) throw anna::RuntimeException("In multistack applications is mandatory register a stack id = 0 using a dictionary which contains the needed elements to build base protocol messages (CER/A, DWR/A, DPR/A, STR/A, etc.)", ANNA_FILE_LOCATION); } - else { // monostack - if (!bpd) - bpd = ce->getDictionary(); // in mono-stack applications, we understand the existing stack as the used - // for base protocol, regardless if it is registered with stack id 0 or not - } // REALMS: for(anna::xml::Node::const_child_iterator it = servicesNode->child_begin(); it != servicesNode->child_end(); it++) { @@ -1526,7 +1518,7 @@ void Launcher::eventOperation(const std::string &operation, std::string &respons } catch(anna::RuntimeException &ex) { ex.trace(); - response_content = anna::functions::asString("Loaded services from file '%s' with some problems (ignored ones)", servicesFile.c_str()); + response_content = anna::functions::asString("Loaded services from file '%s' with errors", servicesFile.c_str()); return; } response_content = anna::functions::asString("Loaded services from file '%s'", servicesFile.c_str()); -- 2.20.1