osaf/services/saf/immsv/immnd/ImmModel.cc |  30 +++++++++++++++---------------
 osaf/services/saf/immsv/immnd/immnd_evt.c |   2 +-
 2 files changed, 16 insertions(+), 16 deletions(-)


The detour seemed mostly to deal with handling of the SaImmScopeT type.
The scope of SA_IMM_ONE is only relevant for accessors and there it is
implicit, since that function only deals with fetching attributes from
one imm object.

diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -1374,6 +1374,7 @@ SaAisErrorT
 immModel_searchInitialize(IMMND_CB *cb, struct ImmsvOmSearchInit* req, 
     void** searchOp, SaBoolT isSync, SaBoolT isAccessor)
 {
+    SaAisErrorT err = SA_AIS_OK;
     ImmSearchOp* op = new ImmSearchOp();
     *searchOp = op;
 
@@ -1386,8 +1387,16 @@ immModel_searchInitialize(IMMND_CB *cb, 
         TRACE("Allocating iterator searchOp:%p", op);
     }
 
-
-    return ImmModel::instance(&cb->immModel)->searchInitialize(req, *op);
+    /* Reset search time */
+    op->updateSearchTime();
+
+    if(isAccessor) {
+        err = ImmModel::instance(&cb->immModel)->accessorGet(req, *op);
+    } else {
+        err = ImmModel::instance(&cb->immModel)->searchInitialize(req, *op);
+    }
+
+    return err;
 }
 
 SaAisErrorT
@@ -10051,6 +10060,10 @@ ImmModel::accessorGet(const ImmsvOmSearc
     SaImmSearchOptionsT notAllowedOptions = 0LL;
     bool nonExtendedNameCheck = req->searchParam.present > 
ImmOmSearchParameter_PR_oneAttrParam;
     bool checkAttribute = false;
+
+    if(nonExtendedNameCheck) {
+        op.setNonExtendedName();
+    }
     
     if (objectName.empty()) {
         LOG_NO("ERR_INVALID_PARAM: Empty DN is not allowed");
@@ -10390,23 +10403,10 @@ ImmModel::searchInitialize(ImmsvOmSearch
     std::string refObjectName;
     SaUint32T childCount=0;
     
-    /* Reset search time */
-    op.updateSearchTime();
-
     if(nonExtendedNameCheck) {
         op.setNonExtendedName();
     }
 
-    if(scope == SA_IMM_ONE) {
-        if(noDanglingSearch) {
-             LOG_NO("ERR_INVALID_PARAM: SA_IMM_SEARCH_NO_DANGLING_DEPENDENTS "
-                     "flag cannot be used with SA_IMM_ONE scope");
-             return SA_AIS_ERR_INVALID_PARAM;
-        }
-
-        return this->accessorGet(req, op);
-    }
-
     size_t sz = strnlen((char *) req->rootName.buf, 
         (size_t)req->rootName.size);
     std::string rootName((const char*)req->rootName.buf, sz);
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -1259,7 +1259,7 @@ static uint32_t immnd_evt_proc_oi_att_pu
                reqo.attributeNames = evt->info.rtAttUpdRpl.sr.attributeNames;  
/*borrowing. */
 
                TRACE_2("oi_att_pull_rpl Before searchInit");
-               err = immModel_searchInitialize(cb, &reqo, &searchOp, SA_FALSE, 
SA_FALSE);
+               err = immModel_searchInitialize(cb, &reqo, &searchOp, SA_FALSE, 
SA_TRUE);
                if (err == SA_AIS_OK) {
                        TRACE_2("oi_att_pull_rpl searchInit returned OK, 
calling searchNext");
                        IMMSV_OM_RSP_SEARCH_NEXT *rsp = 0;

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to