osaf/services/saf/amf/amfnd/comp.cc |  15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)


When called finalize in term callback, the term_cbq_inv_value is not reset. So,
when the component is killed later on, then from avnd_evt_mds_ava_dn_evh, the
recovery is bypassed because of term_cbq_inv_value is set.
This patch resets term_cbq_inv_value during finalize call.

diff --git a/osaf/services/saf/amf/amfnd/comp.cc 
b/osaf/services/saf/amf/amfnd/comp.cc
--- a/osaf/services/saf/amf/amfnd/comp.cc
+++ b/osaf/services/saf/amf/amfnd/comp.cc
@@ -82,6 +82,21 @@ uint32_t avnd_evt_ava_finalize_evh(AVND_
                goto done;
        }
 
+       /* If Amf was waiting for down event to come regarding term cbq, but
+          finalize has come, so reset the variable (irrespective of Sa-Aware
+          PI or Proxied PI) and proceed for finalize. */
+
+       if (comp->term_cbq_inv_value != 0) {
+               AVND_COMP_CBK *cbk_rec;
+               /* Amf was waiting for this down event. Get the matching
+                  entry from the cbk list and delete the cbq */
+               m_AVND_COMP_CBQ_INV_GET(comp, comp->term_cbq_inv_value, 
cbk_rec);
+               comp->term_cbq_inv_value = 0;
+               rc = avnd_comp_clc_fsm_run(cb, comp, 
AVND_COMP_CLC_PRES_FSM_EV_TERM_SUCC);
+               if (cbk_rec)
+                       avnd_comp_cbq_rec_pop_and_del(cb, comp, cbk_rec, false);
+       }
+
        /* npi comps dont interact with amf */
        if (!m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp) && 
!m_AVND_COMP_TYPE_IS_PROXIED(comp))
                goto done;

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to