---
 src/ckpt/ckptnd/cpnd_evt.c | 138 +++++++++++++++++++++++++--------------------
 src/ckpt/ckptnd/cpnd_mds.c |   8 ++-
 2 files changed, 85 insertions(+), 61 deletions(-)

diff --git a/src/ckpt/ckptnd/cpnd_evt.c b/src/ckpt/ckptnd/cpnd_evt.c
index 25083a5..f28f19f 100644
--- a/src/ckpt/ckptnd/cpnd_evt.c
+++ b/src/ckpt/ckptnd/cpnd_evt.c
@@ -4869,76 +4869,94 @@ static uint32_t cpnd_proc_cpd_new_active(CPND_CB *cb)
        while (node) {
 
                out_evt = NULL;
+               if (node->evt.info.cpd.type == CPD_EVT_ND2D_CKPT_USR_INFO)
+               {
+                       rc =  cpnd_mds_msg_send(cb,  NCSMDS_SVC_ID_CPD, 
cb->cpd_mdest_id,
+                                       &node->evt);
+                       if (rc != NCSCC_RC_SUCCESS) {
+                               TRACE_4("cpnd  send to cpd failed %d", rc);
+                               ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list,
+                                               (void *)node);
+                               TRACE_LEAVE();
+                               return rc;
+                       }
+                       else
+                       {
+                               TRACE_4("CPND SEND PASS %d\n",rc);
+                               TRACE_LEAVE();
+                       }
+               }
+               else
+               {
+                       rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD,
+                                       cb->cpd_mdest_id, &node->evt,
+                                       &out_evt, CPSV_WAIT_TIME);
 
-               rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD,
-                                           cb->cpd_mdest_id, &node->evt,
-                                           &out_evt, CPSV_WAIT_TIME);
+                       if (rc != NCSCC_RC_SUCCESS) {
+                               /* put back the event into the deferred 
requests queue
+                                */
+                               TRACE_4("cpnd sync send to cpd failed %d", rc);
+                               ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list,
+                                               (void *)node);
+                               TRACE_LEAVE();
+                               return rc;
+                       }
 
-               if (rc != NCSCC_RC_SUCCESS) {
-                       /* put back the event into the deferred requests queue
-                        */
-                       TRACE_4("cpnd sync send to cpd failed %d", rc);
-                       ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list,
-                                   (void *)node);
-                       TRACE_LEAVE();
-                       return rc;
-               }
+                       switch (node->evt.info.cpd.type) {
 
-               switch (node->evt.info.cpd.type) {
+                               case CPD_EVT_ND2D_CKPT_DESTROY:
+                                       if (out_evt &&
+                                                       
out_evt->info.cpnd.info.destroy_ack.error !=
+                                                       SA_AIS_OK) {
+                                               TRACE_4(
+                                                               "cpnd cpd new 
active destroy failed with error:%d",
+                                                               
out_evt->info.cpnd.info.destroy_ack.error);
+                                       }
+                                       break;
+                               case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
+                                       if (out_evt &&
+                                                       
out_evt->info.cpnd.info.destroy_ack.error !=
+                                                       SA_AIS_OK) {
+                                               TRACE_4(
+                                                               "cpnd cpd new 
active destroy byname failed with error:%d",
+                                                               
out_evt->info.cpnd.info.destroy_ack.error);
+                                       }
+                                       break;
 
-               case CPD_EVT_ND2D_CKPT_DESTROY:
-                       if (out_evt &&
-                           out_evt->info.cpnd.info.destroy_ack.error !=
-                               SA_AIS_OK) {
-                               TRACE_4(
-                                   "cpnd cpd new active destroy failed with 
error:%d",
-                                   out_evt->info.cpnd.info.destroy_ack.error);
-                       }
-                       break;
-               case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME:
-                       if (out_evt &&
-                           out_evt->info.cpnd.info.destroy_ack.error !=
-                               SA_AIS_OK) {
-                               TRACE_4(
-                                   "cpnd cpd new active destroy byname failed 
with error:%d",
-                                   out_evt->info.cpnd.info.destroy_ack.error);
-                       }
-                       break;
+                               case CPD_EVT_ND2D_CKPT_UNLINK:
+                                       if (out_evt &&
+                                                       
out_evt->info.cpnd.info.ulink_ack.error !=
+                                                       SA_AIS_OK) {
+                                               TRACE_4(
+                                                               "cpnd cpd new 
active unlink failed with error:%d",
+                                                               
out_evt->info.cpnd.info.ulink_ack.error);
+                                       }
 
-               case CPD_EVT_ND2D_CKPT_UNLINK:
-                       if (out_evt &&
-                           out_evt->info.cpnd.info.ulink_ack.error !=
-                               SA_AIS_OK) {
-                               TRACE_4(
-                                   "cpnd cpd new active unlink failed with 
error:%d",
-                                   out_evt->info.cpnd.info.ulink_ack.error);
-                       }
+                                       break;
 
-                       break;
+                               case CPD_EVT_ND2D_CKPT_RDSET:
+                                       if (out_evt &&
+                                                       
out_evt->info.cpnd.info.rdset_ack.error !=
+                                                       SA_AIS_OK) {
+                                               TRACE_4(
+                                                               "cpnd cpd new 
active rdset failed with error:%d",
+                                                               
out_evt->info.cpnd.info.rdset_ack.error);
+                                       }
+                                       break;
 
-               case CPD_EVT_ND2D_CKPT_RDSET:
-                       if (out_evt &&
-                           out_evt->info.cpnd.info.rdset_ack.error !=
-                               SA_AIS_OK) {
-                               TRACE_4(
-                                   "cpnd cpd new active rdset failed with 
error:%d",
-                                   out_evt->info.cpnd.info.rdset_ack.error);
-                       }
-                       break;
+                               case CPD_EVT_ND2D_ACTIVE_SET:
+                                       if (out_evt && 
out_evt->info.cpnd.info.arep_ack.error !=
+                                                       SA_AIS_OK) {
+                                               TRACE_4(
+                                                               "cpnd cpd new 
active arep set failed with error:%d",
+                                                               
out_evt->info.cpnd.info.arep_ack.error);
+                                       }
+                                       break;
 
-               case CPD_EVT_ND2D_ACTIVE_SET:
-                       if (out_evt && out_evt->info.cpnd.info.arep_ack.error !=
-                                          SA_AIS_OK) {
-                               TRACE_4(
-                                   "cpnd cpd new active arep set failed with 
error:%d",
-                                   out_evt->info.cpnd.info.arep_ack.error);
+                               default:
+                                       break;
                        }
-                       break;
-
-               default:
-                       break;
                }
-
                m_MMGR_FREE_CPND_CPD_DEFERRED_REQ_NODE(node);
                node = (CPND_CPD_DEFERRED_REQ_NODE *)ncs_dequeue(
                    &cb->cpnd_cpd_deferred_reqs_list);
diff --git a/src/ckpt/ckptnd/cpnd_mds.c b/src/ckpt/ckptnd/cpnd_mds.c
index b3dc2e2..0a2354f 100644
--- a/src/ckpt/ckptnd/cpnd_mds.c
+++ b/src/ckpt/ckptnd/cpnd_mds.c
@@ -1299,7 +1299,7 @@ uint32_t cpnd_mds_msg_send(CPND_CB *cb, uint32_t to_svc, 
MDS_DEST to_dest,
 {
        NCSMDS_INFO mds_info;
        uint32_t rc;
-
+       CPND_CPD_DEFERRED_REQ_NODE *node = NULL;
        TRACE_ENTER();
        if (!evt) {
                TRACE_LEAVE();
@@ -1312,6 +1312,12 @@ uint32_t cpnd_mds_msg_send(CPND_CB *cb, uint32_t to_svc, 
MDS_DEST to_dest,
                /* CPD is not UP */
                TRACE_4("cpnd cpd service is down");
                m_NCS_UNLOCK(&cb->cpnd_cpd_up_lock, NCS_LOCK_WRITE);
+               node = (CPND_CPD_DEFERRED_REQ_NODE *)
+                       m_MMGR_ALLOC_CPND_CPD_DEFERRED_REQ_NODE;
+               memset(node, '\0', sizeof(CPND_CPD_DEFERRED_REQ_NODE));
+               node->evt = *evt;
+               ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list,
+                               (void *)node);
                TRACE_LEAVE();
                return NCSCC_RC_FAILURE;
        }
-- 
2.7.4



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

Reply via email to