osaf/services/saf/amf/amfnd/clc.cc | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/osaf/services/saf/amf/amfnd/clc.cc b/osaf/services/saf/amf/amfnd/clc.cc --- a/osaf/services/saf/amf/amfnd/clc.cc +++ b/osaf/services/saf/amf/amfnd/clc.cc @@ -2024,7 +2024,22 @@ uint32_t avnd_comp_clc_inst_clean_hdler( rc = avnd_comp_cbk_send(cb, comp, AVSV_AMF_PXIED_COMP_CLEAN, 0, 0); } else if (m_AVND_COMP_TYPE_IS_PROXY(comp) && comp->pxied_list.n_nodes) { /* if there are still outstanding proxied components we can't terminate right now */ - return rc; + /* Check if the proxy and proxied components are in the same SUs. */ + TRACE("Proxy has proxied components: %u", comp->pxied_list.n_nodes); + AVND_COMP_PXIED_REC *rec; + rec = (AVND_COMP_PXIED_REC *)m_NCS_DBLIST_FIND_FIRST(&comp->pxied_list); + while (rec) { + if (comp->su == rec->pxied_comp->su) + break; + rec = (AVND_COMP_PXIED_REC *)m_NCS_DBLIST_FIND_NEXT(&rec->comp_dll_node); + } + if (rec == nullptr) { + TRACE("Proxy and proxied are not in the same SU."); + /* This means that proxy and proxied components are not in the same SU. + That means that we can cleanup the component. */ + rc = avnd_comp_clc_cmd_execute(cb, comp, AVND_COMP_CLC_CMD_TYPE_CLEANUP); + } else + return rc; } else { if (m_AVND_SU_IS_RESTART(comp->su) && m_AVND_COMP_IS_RESTART_DIS(comp) && (comp->csi_list.n_nodes > 0) && ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel