Currently in saImmOiAugmentCcbInitialize, if OI augmented ccb handle
initialization request does not result in OK or TRY_AGAIN, the
privateOmHandle will be finalized and the private OM will be destroyed.

That is fine if the privateOmHandle is initialized in the current
session. But if the privateOmHandle was already initialized in another
previous callback, which means the privateOmHandle record was added to
imma_oi_ccb_record of the corresponding client node, finalizing this
privateOmHandle without cleaning-up imma_oi_ccb_record may call up
unexpected behavior of the Implementer.

This patch checks if the privateOmHandle is the previous initialized
privateOmHandle to avoid finalizing it. This privateOmHandle will be
automatically finalized and cleanup-up in CCB abort or CCB apply.
---
 src/imm/agent/imma_oi_api.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/imm/agent/imma_oi_api.cc b/src/imm/agent/imma_oi_api.cc
index 29fb39d..187e891 100644
--- a/src/imm/agent/imma_oi_api.cc
+++ b/src/imm/agent/imma_oi_api.cc
@@ -4098,9 +4098,11 @@ done:
     TRACE("ownerHandle:%llx", *ownerHandle);
 
   } else if (privateOmHandle) {
-    osafassert(immsv_om_handle_finalize);
-    immsv_om_handle_finalize(
-        privateOmHandle); /* Also finalizes admo handles & ccb handles*/
+    if (privateOmHandle != ccb_oi_record->privateAugOmHandle) {
+      osafassert(immsv_om_handle_finalize);
+      immsv_om_handle_finalize(
+          privateOmHandle); /* Also finalizes admo handles & ccb handles*/
+    }
   }
 
   if (out_evt) {
-- 
2.7.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to