During SU restart, component is instantiated failed. It makes
component failover. In avnd_su_si_oper_done(), the buffered msg
need removing if the SU is in disable oper state.
---
 src/amf/amfnd/susm.cc | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/amf/amfnd/susm.cc b/src/amf/amfnd/susm.cc
index d8ef66ea2..d3c8226f5 100644
--- a/src/amf/amfnd/susm.cc
+++ b/src/amf/amfnd/susm.cc
@@ -309,6 +309,12 @@ uint32_t avnd_su_siq_prc(AVND_CB *cb, AVND_SU *su) {
   /* initiate si asignment / removal */
   rc = avnd_su_si_msg_prc(cb, su, &siq->info);
 
+  /* get the least-recent buffered msg, if any */
+  siq = reinterpret_cast<AVND_SU_SIQ_REC *>(m_NCS_DBLIST_FIND_LAST(&su->siq));
+  if (!siq) {
+    TRACE_LEAVE();
+    return rc;
+  }
   // Siq will used to su-si respond later
   // in case modify SU-SI during SURestart
   if ((siq->info.msg_act != AVSV_SUSI_ACT_MOD) ||
@@ -1214,8 +1220,9 @@ uint32_t avnd_su_si_oper_done(AVND_CB *cb, AVND_SU *su, 
AVND_SU_SI_REC *si) {
 
   // Modify event during SURestart should be respond
   siq = reinterpret_cast<AVND_SU_SIQ_REC *>(m_NCS_DBLIST_FIND_LAST(&su->siq));
-  if (siq && (siq->info.msg_act == AVSV_SUSI_ACT_MOD) &&
-      m_AVND_SU_IS_RESTART(su)) {
+  if (siq && (((siq->info.msg_act == AVSV_SUSI_ACT_MOD) &&
+      m_AVND_SU_IS_RESTART(su)) ||
+      (m_AVND_SU_OPER_STATE_IS_DISABLED(su)))) {
       ncs_db_link_list_delink(&su->siq, &siq->su_dll_node);
       /* delete the buffered msg */
       avnd_su_siq_rec_del(avnd_cb, su, siq);
-- 
2.17.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to