osaf/libs/core/mds/mds_c_sndrcv.c |  40 +-------------------------------------
 1 files changed, 2 insertions(+), 38 deletions(-)


Made  centralized locks & unlock  wherever possible,
for better debugging mds code and to reduces scope of locks & unlock code errors

diff --git a/osaf/libs/core/mds/mds_c_sndrcv.c 
b/osaf/libs/core/mds/mds_c_sndrcv.c
--- a/osaf/libs/core/mds/mds_c_sndrcv.c
+++ b/osaf/libs/core/mds/mds_c_sndrcv.c
@@ -1804,7 +1804,6 @@ static uint32_t mds_subtn_tbl_add_disc_q
 
        /* Now wait till the timeout or an subscription result will come */
 
-       osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
 
        switch (req->i_sendtype) {
        case MDS_SENDTYPE_SND:
@@ -1888,7 +1887,6 @@ static uint32_t mds_subtn_tbl_add_disc_q
                break;
        }
 
-       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
 
        if (NCSCC_RC_SUCCESS != mds_check_for_mds_existence(&add_ptr->sel_obj, 
env_hdl, fr_svc_id, req->i_to_svc)) {
                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt exist\n");
@@ -2465,9 +2463,7 @@ static uint32_t mcm_pvt_normal_svc_sndrs
                     get_svc_names(fr_svc_id), fr_svc_id, 
get_svc_names(to_svc_id), to_svc_id, to_dest);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndrsp.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        /* This is for response for local dest */
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
@@ -2488,7 +2484,6 @@ static uint32_t mcm_pvt_normal_svc_sndrs
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
 
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_INFO("MDS_SND_RCV: MDS entry doesnt 
exist\n");
@@ -2579,10 +2574,12 @@ static uint32_t mds_await_active_tbl_del
 
 static uint32_t mds_mcm_time_wait(NCS_SEL_OBJ *sel_obj, uint32_t time_val)
 {
+       osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
        /* Now wait for the response to come */
        int count = osaf_poll_one_fd(sel_obj->rmv_obj,
                time_val == 0 ? -1 : (time_val * 10));
 
+       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
        if ((count == 0) || (count == -1)) {
                /* Both for Timeout and Error Case */
                m_MDS_LOG_ERR("MDS_SND_RCV: Timeout or Error occured\n");
@@ -2819,10 +2816,8 @@ static uint32_t mcm_pvt_normal_svc_sndra
                m_MDS_ERR_PRINT_ANCHOR(msg_dest_adest);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
 
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndrack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* for local case */
                                /* sucess case */
@@ -2841,7 +2836,6 @@ static uint32_t mcm_pvt_normal_svc_sndra
                                                    msg_dest_adest);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
 
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
@@ -3057,9 +3051,7 @@ static uint32_t mcm_pvt_normal_svc_sndac
                m_MDS_ERR_PRINT_ADEST(to_dest);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -3076,7 +3068,6 @@ static uint32_t mcm_pvt_normal_svc_sndac
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -3271,9 +3262,7 @@ static uint32_t mcm_pvt_red_svc_sndrsp(M
                m_MDS_ERR_PRINT_ANCHOR(anchor);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redrsp.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                req->info.redrsp.o_rsp = sync_queue->sent_msg;
@@ -3294,7 +3283,6 @@ static uint32_t mcm_pvt_red_svc_sndrsp(M
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -3417,9 +3405,7 @@ static uint32_t mcm_pvt_red_svc_sndrack(
                m_MDS_ERR_PRINT_ANCHOR(anchor);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redrack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -3437,7 +3423,6 @@ static uint32_t mcm_pvt_red_svc_sndrack(
                                                    msg_dest_adest);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -3547,9 +3532,7 @@ static uint32_t mcm_pvt_red_svc_sndack(M
                m_MDS_ERR_PRINT_ANCHOR(anchor);
                return status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -3566,7 +3549,6 @@ static uint32_t mcm_pvt_red_svc_sndack(M
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5125,10 +5107,8 @@ static uint32_t mcm_pvt_normal_svc_sndrs
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, 0);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
 
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndrsp.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        /* This is for response for local dest */
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
@@ -5150,7 +5130,6 @@ static uint32_t mcm_pvt_normal_svc_sndrs
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5213,11 +5192,9 @@ static uint32_t mcm_pvt_normal_svc_sndac
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, 0);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
 
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndack.i_time_to_wait)) {
                        /* This is for response for local dest */
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -5235,7 +5212,6 @@ static uint32_t mcm_pvt_normal_svc_sndac
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5307,9 +5283,7 @@ static uint32_t mcm_pvt_normal_svc_sndra
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, msg_dest_adest);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.sndrack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* for local case */
                                /* sucess case */
@@ -5329,7 +5303,6 @@ static uint32_t mcm_pvt_normal_svc_sndra
                                                    msg_dest_adest);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5435,9 +5408,7 @@ static uint32_t mcm_pvt_red_svc_sndrsp_d
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, 0);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redrsp.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                req->info.redrsp.buff = 
sync_queue->recvd_msg.data.buff_info.buff;
@@ -5459,7 +5430,6 @@ static uint32_t mcm_pvt_red_svc_sndrsp_d
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5535,9 +5505,7 @@ static uint32_t mcm_pvt_red_svc_sndrack_
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, msg_dest_adest);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redrack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -5557,7 +5525,6 @@ static uint32_t mcm_pvt_red_svc_sndrack_
                                                    msg_dest_adest);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;
@@ -5620,9 +5587,7 @@ static uint32_t mcm_pvt_red_svc_sndack_d
                mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, 
xch_id, req->i_sendtype, 0);
                return ret_status;
        } else {
-               osaf_mutex_unlock_ordie(&gl_mds_library_mutex);
                if (NCSCC_RC_SUCCESS != mds_mcm_time_wait(&sync_queue->sel_obj, 
req->info.redack.i_time_to_wait)) {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (sync_queue->status == NCSCC_RC_SUCCESS) {
                                /* sucess case */
                                
mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, fr_svc_id, xch_id, 
req->i_sendtype,
@@ -5640,7 +5605,6 @@ static uint32_t mcm_pvt_red_svc_sndack_d
                        mcm_pvt_del_sync_send_entry((MDS_PWE_HDL)env_hdl, 
fr_svc_id, xch_id, req->i_sendtype, 0);
                        return NCSCC_RC_REQ_TIMOUT;
                } else {
-                       osaf_mutex_lock_ordie(&gl_mds_library_mutex);
                        if (NCSCC_RC_SUCCESS != 
mds_check_for_mds_existence(&sync_queue->sel_obj, env_hdl, fr_svc_id, 
to_svc_id)) {
                                m_MDS_LOG_ERR("MDS_SND_RCV: MDS entry doesnt 
exist\n");
                                return NCSCC_RC_FAILURE;

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

Reply via email to