osaf/libs/agents/saf/amfa/ava_init.c          |   2 +-
 osaf/libs/agents/saf/clma/clma_util.c         |   2 +-
 osaf/libs/agents/saf/cpa/cpa_init.c           |   2 +-
 osaf/libs/agents/saf/cpa/cpa_proc.c           |   2 +-
 osaf/libs/agents/saf/eda/eda_mds.c            |   2 +-
 osaf/libs/agents/saf/gla/gla_init.c           |   2 +-
 osaf/libs/agents/saf/imma/imma_init.c         |   2 +-
 osaf/libs/agents/saf/lga/lga_util.c           |   2 +-
 osaf/libs/agents/saf/mqa/mqa_init.c           |   4 +-
 osaf/libs/agents/saf/ntfa/ntfa_util.c         |   2 +-
 osaf/libs/agents/saf/plma/plma_mds.c          |   2 +-
 osaf/libs/core/include/ncs_osprm.h            |   2 +-
 osaf/libs/core/leap/os_defs.c                 |  37 ++++++++++++++++++++------
 osaf/libs/core/leap/sysf_tmr.c                |   8 ++--
 osaf/libs/core/mds/mds_c_sndrcv.c             |  10 +++---
 osaf/libs/core/mds/mds_main.c                 |   4 +-
 osaf/services/infrastructure/fm/fms/fm_main.c |   2 +-
 osaf/services/infrastructure/rde/rde_main.c   |   2 +-
 osaf/services/saf/clmsv/clms/clms_main.c      |   2 +-
 osaf/services/saf/clmsv/nodeagent/main.c      |   2 +-
 osaf/services/saf/immsv/immd/immd_main.c      |   2 +-
 osaf/services/saf/immsv/immnd/immnd_main.c    |   2 +-
 osaf/services/saf/logsv/lgs/lgs_main.c        |   2 +-
 osaf/services/saf/ntfsv/ntfs/ntfs_main.c      |   2 +-
 osaf/services/saf/plmsv/plms/plms_main.c      |   2 +-
 25 files changed, 61 insertions(+), 42 deletions(-)


This patch addresses the corrections suggested by the ticket #928, in handling 
raise_obj, rmv_obj file descriptors of selection object.

1. Whenever the file descriptors raise_obj and/or rmv_obj are closed, the 
respective file descriptor(s) in the data structure are set to -1 indicating 
that the file descriptor(s) are no longer valid.

2. The function ncs_sel_obj_rmv_ind() checks rmv_obj file descriptor, and if 
set to -1, return immediately without trying to operate on the file descriptor.

3. The function ncs_sel_obj_ind() checks raise_obj file descriptor, and if set 
to -1, return immediately without trying to operate on the file descriptor.

4. If still recv() fails due to any other reason than EAGAIN or EINTR, does 
osaf_abort() to generate a core dump.

diff --git a/osaf/libs/agents/saf/amfa/ava_init.c 
b/osaf/libs/agents/saf/amfa/ava_init.c
--- a/osaf/libs/agents/saf/amfa/ava_init.c
+++ b/osaf/libs/agents/saf/amfa/ava_init.c
@@ -201,7 +201,7 @@ uint32_t ava_create(NCS_LIB_CREATE *crea
        m_NCS_UNLOCK(&cb->lock, NCS_LOCK_WRITE);
 
        /* This sel obj is no more used */
-       m_NCS_SEL_OBJ_DESTROY(cb->sel_obj);
+       m_NCS_SEL_OBJ_DESTROY(&cb->sel_obj);
 
        /* everything went off well.. store the cb hdl in the global variable */
        gl_ava_hdl = cb->cb_hdl;
diff --git a/osaf/libs/agents/saf/clma/clma_util.c 
b/osaf/libs/agents/saf/clma/clma_util.c
--- a/osaf/libs/agents/saf/clma/clma_util.c
+++ b/osaf/libs/agents/saf/clma/clma_util.c
@@ -75,7 +75,7 @@ static unsigned int clma_create(void)
        pthread_mutex_unlock(&clma_cb.cb_lock);
 
        /* No longer needed */
-       m_NCS_SEL_OBJ_DESTROY(clma_cb.clms_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&clma_cb.clms_sync_sel);
 
        return rc;
 
diff --git a/osaf/libs/agents/saf/cpa/cpa_init.c 
b/osaf/libs/agents/saf/cpa/cpa_init.c
--- a/osaf/libs/agents/saf/cpa/cpa_init.c
+++ b/osaf/libs/agents/saf/cpa/cpa_init.c
@@ -106,7 +106,7 @@ void cpa_sync_with_cpnd(CPA_CB *cb)
        m_NCS_LOCK(&cb->cpnd_sync_lock, NCS_LOCK_WRITE);
 
        cb->cpnd_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->cpnd_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->cpnd_sync_sel);
 
        m_NCS_UNLOCK(&cb->cpnd_sync_lock, NCS_LOCK_WRITE);
        return;
diff --git a/osaf/libs/agents/saf/cpa/cpa_proc.c 
b/osaf/libs/agents/saf/cpa/cpa_proc.c
--- a/osaf/libs/agents/saf/cpa/cpa_proc.c
+++ b/osaf/libs/agents/saf/cpa/cpa_proc.c
@@ -1342,7 +1342,7 @@ void cpa_sync_with_cpd_for_active_replic
        /* Destroy the sync - object */
        m_NCS_LOCK(&gc_node->cpd_active_sync_lock, NCS_LOCK_WRITE);
        gc_node->cpd_active_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(gc_node->cpd_active_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&gc_node->cpd_active_sync_sel);
        m_NCS_UNLOCK(&gc_node->cpd_active_sync_lock, NCS_LOCK_WRITE);
        TRACE_LEAVE();
        return;
diff --git a/osaf/libs/agents/saf/eda/eda_mds.c 
b/osaf/libs/agents/saf/eda/eda_mds.c
--- a/osaf/libs/agents/saf/eda/eda_mds.c
+++ b/osaf/libs/agents/saf/eda/eda_mds.c
@@ -1539,7 +1539,7 @@ void eda_sync_with_eds(EDA_CB *cb)
        m_NCS_LOCK(&cb->eds_sync_lock, NCS_LOCK_WRITE);
 
        cb->eds_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->eds_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->eds_sync_sel);
 
        m_NCS_UNLOCK(&cb->eds_sync_lock, NCS_LOCK_WRITE);
        return;
diff --git a/osaf/libs/agents/saf/gla/gla_init.c 
b/osaf/libs/agents/saf/gla/gla_init.c
--- a/osaf/libs/agents/saf/gla/gla_init.c
+++ b/osaf/libs/agents/saf/gla/gla_init.c
@@ -117,7 +117,7 @@ void gla_sync_with_glnd(GLA_CB *cb)
        m_NCS_LOCK(&cb->glnd_sync_lock, NCS_LOCK_WRITE);
 
        cb->glnd_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->glnd_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->glnd_sync_sel);
 
        m_NCS_UNLOCK(&cb->glnd_sync_lock, NCS_LOCK_WRITE);
 
diff --git a/osaf/libs/agents/saf/imma/imma_init.c 
b/osaf/libs/agents/saf/imma/imma_init.c
--- a/osaf/libs/agents/saf/imma/imma_init.c
+++ b/osaf/libs/agents/saf/imma/imma_init.c
@@ -80,7 +80,7 @@ static void imma_sync_with_immnd(IMMA_CB
        m_NCS_LOCK(&cb->immnd_sync_lock,NCS_LOCK_WRITE);
 
        cb->immnd_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->immnd_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->immnd_sync_sel);
 
        m_NCS_UNLOCK(&cb->immnd_sync_lock, NCS_LOCK_WRITE);
 
diff --git a/osaf/libs/agents/saf/lga/lga_util.c 
b/osaf/libs/agents/saf/lga/lga_util.c
--- a/osaf/libs/agents/saf/lga/lga_util.c
+++ b/osaf/libs/agents/saf/lga/lga_util.c
@@ -51,7 +51,7 @@ static unsigned int lga_create(void)
        pthread_mutex_unlock(&lga_cb.cb_lock);
 
        /* No longer needed */
-       m_NCS_SEL_OBJ_DESTROY(lga_cb.lgs_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&lga_cb.lgs_sync_sel);
 
        return rc;
 
diff --git a/osaf/libs/agents/saf/mqa/mqa_init.c 
b/osaf/libs/agents/saf/mqa/mqa_init.c
--- a/osaf/libs/agents/saf/mqa/mqa_init.c
+++ b/osaf/libs/agents/saf/mqa/mqa_init.c
@@ -126,7 +126,7 @@ static void mqa_sync_with_mqd(MQA_CB *cb
        m_NCS_LOCK(&cb->mqd_sync_lock, NCS_LOCK_WRITE);
 
        cb->mqd_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->mqd_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->mqd_sync_sel);
 
        m_NCS_UNLOCK(&cb->mqd_sync_lock, NCS_LOCK_WRITE);
        TRACE_1("MQD synced up with the MQA");
@@ -163,7 +163,7 @@ static void mqa_sync_with_mqnd(MQA_CB *c
        m_NCS_LOCK(&cb->mqnd_sync_lock, NCS_LOCK_WRITE);
 
        cb->mqnd_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->mqnd_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&cb->mqnd_sync_sel);
 
        m_NCS_UNLOCK(&cb->mqnd_sync_lock, NCS_LOCK_WRITE);
        TRACE_1("MQND synced up with the MQA");
diff --git a/osaf/libs/agents/saf/ntfa/ntfa_util.c 
b/osaf/libs/agents/saf/ntfa/ntfa_util.c
--- a/osaf/libs/agents/saf/ntfa/ntfa_util.c
+++ b/osaf/libs/agents/saf/ntfa/ntfa_util.c
@@ -56,7 +56,7 @@ static unsigned int ntfa_create(void)
        pthread_mutex_unlock(&ntfa_cb.cb_lock);
 
        /* No longer needed */
-       m_NCS_SEL_OBJ_DESTROY(ntfa_cb.ntfs_sync_sel);
+       m_NCS_SEL_OBJ_DESTROY(&ntfa_cb.ntfs_sync_sel);
 
        /* TODO: fix env variable */
        ntfa_cb.ntf_var_data_limit = NTFA_VARIABLE_DATA_LIMIT;
diff --git a/osaf/libs/agents/saf/plma/plma_mds.c 
b/osaf/libs/agents/saf/plma/plma_mds.c
--- a/osaf/libs/agents/saf/plma/plma_mds.c
+++ b/osaf/libs/agents/saf/plma/plma_mds.c
@@ -358,7 +358,7 @@ void plma_sync_with_plms()
        m_NCS_LOCK(&cb->cb_lock, NCS_LOCK_WRITE);
 
        cb->plms_sync_awaited = false;
-       m_NCS_SEL_OBJ_DESTROY(cb->sel_obj);
+       m_NCS_SEL_OBJ_DESTROY(&cb->sel_obj);
 
        m_NCS_UNLOCK(&cb->cb_lock, NCS_LOCK_WRITE);
 
diff --git a/osaf/libs/core/include/ncs_osprm.h 
b/osaf/libs/core/include/ncs_osprm.h
--- a/osaf/libs/core/include/ncs_osprm.h
+++ b/osaf/libs/core/include/ncs_osprm.h
@@ -671,7 +671,7 @@ uint32_t ncs_os_posix_mq(NCS_OS_POSIX_MQ
                         (This is an IN argument)
 
 \****************************************************************************/
-       uint32_t ncs_sel_obj_destroy(NCS_SEL_OBJ i_sel_obj);
+       uint32_t ncs_sel_obj_destroy(NCS_SEL_OBJ *i_sel_obj);
 #define     m_NCS_SEL_OBJ_DESTROY(i_sel_obj) ncs_sel_obj_destroy(i_sel_obj)
 
 /****************************************************************************\ 
diff --git a/osaf/libs/core/leap/os_defs.c b/osaf/libs/core/leap/os_defs.c
--- a/osaf/libs/core/leap/os_defs.c
+++ b/osaf/libs/core/leap/os_defs.c
@@ -1109,22 +1109,23 @@ uint32_t ncs_sel_obj_create(NCS_SEL_OBJ 
        flags = fcntl(o_sel_obj->raise_obj, F_GETFL, 0);
        if (fcntl(o_sel_obj->raise_obj, F_SETFL, (flags | O_NONBLOCK)) == -1) {
                syslog(LOG_ERR, "%s: fcntl failed - %s", __FUNCTION__, 
strerror(errno));
-               (void) ncs_sel_obj_destroy(*o_sel_obj);
+               (void) ncs_sel_obj_destroy(o_sel_obj);
                return NCSCC_RC_FAILURE;
        }
 
        return NCSCC_RC_SUCCESS;
 }
 
-uint32_t ncs_sel_obj_destroy(NCS_SEL_OBJ i_ind_obj)
+
+uint32_t ncs_sel_obj_destroy(NCS_SEL_OBJ *i_ind_obj)
 {
-       shutdown(i_ind_obj.raise_obj, SHUT_RDWR);
-       close(i_ind_obj.raise_obj);
-       shutdown(i_ind_obj.rmv_obj, SHUT_RDWR);
-       close(i_ind_obj.rmv_obj);
+       ncs_sel_obj_raise_operation_shut(i_ind_obj);
+       ncs_sel_obj_rmv_operation_shut(i_ind_obj);
+
        return NCSCC_RC_SUCCESS;
 }
 
+
 uint32_t ncs_sel_obj_rmv_operation_shut(NCS_SEL_OBJ *i_ind_obj)
 {
        if (i_ind_obj == NULL)
@@ -1161,7 +1162,16 @@ uint32_t ncs_sel_obj_raise_operation_shu
 uint32_t ncs_sel_obj_ind(NCS_SEL_OBJ i_ind_obj)
 {
        int rc;
+       static int logging = 0;
 
+       if (i_ind_obj.raise_obj == -1) {
+               /* Very unlikely, still avoid spamming and log only once */ 
+               if (!logging++)
+                       syslog(LOG_ERR, "%s: FAILED", __FUNCTION__);
+               return NCSCC_RC_FAILURE;
+       }
+
+       logging = 0;
 retry:
        /* The following call can block, in such a case a failure is returned */
        if ((rc = write(i_ind_obj.raise_obj, "A", 1)) != 1) {
@@ -1184,10 +1194,20 @@ int ncs_sel_obj_rmv_ind(NCS_SEL_OBJ i_in
        int ind_count, tot_inds_rmvd;
        int num_at_a_time;
        int raise_non_block_flag_set = 0, rmv_non_block_flag_set = 0, flags = 0;
+       static int logging = 0;
 
        tot_inds_rmvd = 0;
        num_at_a_time = (one_at_a_time ? 1 : MAX_INDS_AT_A_TIME);
 
+       if (i_ind_obj.rmv_obj == -1) {
+               /* Very unlikely, still avoid spamming and log only once */ 
+               if (!logging++)
+                       syslog(LOG_ERR, "%s: FAILED", __FUNCTION__);
+               return NCSCC_RC_FAILURE;
+       }
+
+       logging = 0;
+       
        /* If one_at_a_time == false, remove MAX_INDS_AT_A_TIME in a 
         * non-blocking way and count the number of indications 
         * so removed using "tot_inds_rmvd"
@@ -1229,7 +1249,7 @@ int ncs_sel_obj_rmv_ind(NCS_SEL_OBJ i_in
                        else {
                                /* Unknown error. */
                                syslog(LOG_ERR, "%s: recv failed - %s", 
__FUNCTION__, strerror(errno));
-                               return -1;
+                               osaf_abort(ind_count);
                        }
                }
        }                       /* End of infinite loop */
@@ -1285,8 +1305,7 @@ int ncs_sel_obj_rmv_ind(NCS_SEL_OBJ i_in
                         * Close down and return error.
                         * FIXME: TODO
                         */
-                       shutdown(i_ind_obj.rmv_obj, SHUT_RDWR);
-                       close(i_ind_obj.rmv_obj);
+                       ncs_sel_obj_rmv_operation_shut(&i_ind_obj);
                        DIAG("RMV_IND2. Returning -1\n");
                        return -1;
                }
diff --git a/osaf/libs/core/leap/sysf_tmr.c b/osaf/libs/core/leap/sysf_tmr.c
--- a/osaf/libs/core/leap/sysf_tmr.c
+++ b/osaf/libs/core/leap/sysf_tmr.c
@@ -518,14 +518,14 @@ bool sysfTmrCreate(void)
                              (char *)"OSAF_TMR",
                              prio_val, policy, NCS_TMR_STACKSIZE, 
&gl_tcb.p_tsk_hdl) != NCSCC_RC_SUCCESS) {
                ncs_patricia_tree_destroy(&gl_tcb.tmr_pat_tree);
-               m_NCS_SEL_OBJ_DESTROY(gl_tcb.sel_obj);
+               m_NCS_SEL_OBJ_DESTROY(&gl_tcb.sel_obj);
                return false;
        }
 
        if (m_NCS_TASK_START(gl_tcb.p_tsk_hdl) != NCSCC_RC_SUCCESS) {
                m_NCS_TASK_RELEASE(gl_tcb.p_tsk_hdl);
                ncs_patricia_tree_destroy(&gl_tcb.tmr_pat_tree);
-               m_NCS_SEL_OBJ_DESTROY(gl_tcb.sel_obj);
+               m_NCS_SEL_OBJ_DESTROY(&gl_tcb.sel_obj);
                return false;
        }
        return true;
@@ -581,7 +581,7 @@ bool sysfTmrDestroy(void)
        }
 
        ncs_patricia_tree_destroy(&gl_tcb.tmr_pat_tree);
-       m_NCS_SEL_OBJ_DESTROY(gl_tcb.sel_obj);
+       m_NCS_SEL_OBJ_DESTROY(&gl_tcb.sel_obj);
 
        /* Stop the dedicated thread that runs out of ncs_tmr_wait() */
 
@@ -589,7 +589,7 @@ bool sysfTmrDestroy(void)
 
        tmr_destroying = false;
 
-       m_NCS_SEL_OBJ_DESTROY(tmr_destroy_syn_obj);
+       m_NCS_SEL_OBJ_DESTROY(&tmr_destroy_syn_obj);
 
        m_NCS_UNLOCK(&gl_tcb.safe.enter_lock, NCS_LOCK_WRITE);  /* critical 
region END */
 
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
@@ -1903,7 +1903,7 @@ static uint32_t mds_subtn_tbl_del_disc_q
        if (q_ptr->next_msg == NULL) {
                if (memcmp(&q_ptr->sel_obj, &obj, sizeof(NCS_SEL_OBJ)) == 0) {
                        sub_info->await_disc_queue = NULL;
-                       m_NCS_SEL_OBJ_DESTROY(q_ptr->sel_obj);
+                       m_NCS_SEL_OBJ_DESTROY(&q_ptr->sel_obj);
                        m_MMGR_FREE_DISC_QUEUE(q_ptr);
                        m_MDS_LOG_INFO("MDS_SND_RCV: Successfully deleted from 
discovery queue\n");
                        return NCSCC_RC_SUCCESS;
@@ -1914,7 +1914,7 @@ static uint32_t mds_subtn_tbl_del_disc_q
        } else {
                if (memcmp(&q_ptr->sel_obj, &obj, sizeof(NCS_SEL_OBJ)) == 0) {
                        sub_info->await_disc_queue = q_ptr->next_msg;
-                       m_NCS_SEL_OBJ_DESTROY(q_ptr->sel_obj);
+                       m_NCS_SEL_OBJ_DESTROY(&q_ptr->sel_obj);
                        m_MMGR_FREE_DISC_QUEUE(q_ptr);
                        m_MDS_LOG_INFO("MDS_SND_RCV: Successfully deleted from 
discovery queue\n");
                        return NCSCC_RC_SUCCESS;
@@ -1926,7 +1926,7 @@ static uint32_t mds_subtn_tbl_del_disc_q
                                        } else {
                                                del_ptr->next_msg = 
q_ptr->next_msg;
                                        }
-                                       m_NCS_SEL_OBJ_DESTROY(q_ptr->sel_obj);
+                                       m_NCS_SEL_OBJ_DESTROY(&q_ptr->sel_obj);
                                        m_MMGR_FREE_DISC_QUEUE(q_ptr);
                                        m_MDS_LOG_INFO("MDS_SND_RCV: 
Successfully deleted from discovery queue\n");
                                        return NCSCC_RC_SUCCESS;
@@ -2619,7 +2619,7 @@ static uint32_t mcm_pvt_del_sync_send_en
                svc_cb->sync_count--;
                m_MDS_LOG_INFO("MDS_SND_RCV: Successfully Deleted the sync send 
entry with xch_id=%d, fr_svc_id=%d\n",
                               xch_id, fr_svc_id);
-               m_NCS_SEL_OBJ_DESTROY(q_ptr->sel_obj);
+               m_NCS_SEL_OBJ_DESTROY(&q_ptr->sel_obj);
                m_MMGR_FREE_SYNC_SEND_QUEUE(q_ptr);
                q_ptr = NULL;
                return NCSCC_RC_SUCCESS;
@@ -6350,7 +6350,7 @@ static uint32_t mds_check_for_mds_existe
                        }
                }
        }
-       m_NCS_SEL_OBJ_DESTROY(sel_obj);
+       m_NCS_SEL_OBJ_DESTROY(&sel_obj);
        return NCSCC_RC_FAILURE;
 }
 
diff --git a/osaf/libs/core/mds/mds_main.c b/osaf/libs/core/mds/mds_main.c
--- a/osaf/libs/core/mds/mds_main.c
+++ b/osaf/libs/core/mds/mds_main.c
@@ -308,7 +308,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
                /* Post a dummy message to MDS thread to guarantee that it
                   wakes up (and thereby sees the destroy_ind) */
                if (mds_destroy_event(destroy_ack_obj) == NCSCC_RC_FAILURE) {
-                       m_NCS_SEL_OBJ_DESTROY(destroy_ack_obj);
+                       m_NCS_SEL_OBJ_DESTROY(&destroy_ack_obj);
                        return NCSCC_RC_FAILURE;
                }
                /* Wait for indication from MDS thread that it is ok to kill it 
*/
@@ -329,7 +329,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
                   destruction. Since we will be destroying the MDS-thread, the 
following 
                   selection-object can no longer be accessed. Hence, it is 
safe and correct 
                   to destroy it now */
-               m_NCS_SEL_OBJ_DESTROY(destroy_ack_obj);
+               m_NCS_SEL_OBJ_DESTROY(&destroy_ack_obj);
                memset(&destroy_ack_obj, 0, sizeof(destroy_ack_obj));   /* 
Destroy info */
 
                /* Sanity check */
diff --git a/osaf/services/infrastructure/fm/fms/fm_main.c 
b/osaf/services/infrastructure/fm/fms/fm_main.c
--- a/osaf/services/infrastructure/fm/fms/fm_main.c
+++ b/osaf/services/infrastructure/fm/fms/fm_main.c
@@ -276,7 +276,7 @@ int main(int argc, char *argv[])
                        }
                        } else {
                                TRACE("SIGUSR1 event rec");
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
                                if (fm_amf_init(&fm_cb->fm_amf_cb) != 
NCSCC_RC_SUCCESS)
                                        goto done;
                                fds[FD_AMF].fd = fm_cb->fm_amf_cb.amf_fd;
diff --git a/osaf/services/infrastructure/rde/rde_main.c 
b/osaf/services/infrastructure/rde/rde_main.c
--- a/osaf/services/infrastructure/rde/rde_main.c
+++ b/osaf/services/infrastructure/rde/rde_main.c
@@ -441,7 +441,7 @@ int main(int argc, char *argv[])
                                }
                        } else {
                                TRACE("SIGUSR1 event rec");
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
                                
                                if (rde_amf_init(&rde_cb->rde_amf_cb) != 
NCSCC_RC_SUCCESS)
                                        goto done;
diff --git a/osaf/services/saf/clmsv/clms/clms_main.c 
b/osaf/services/saf/clmsv/clms/clms_main.c
--- a/osaf/services/saf/clmsv/clms/clms_main.c
+++ b/osaf/services/saf/clmsv/clms/clms_main.c
@@ -475,7 +475,7 @@ int main(int argc, char *argv[])
                        } else {
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(usr1_sel_obj, true, true);
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
 
                                if (clms_amf_init(clms_cb) != NCSCC_RC_SUCCESS) 
{
                                        LOG_ER("AMF Initialization failed");
diff --git a/osaf/services/saf/clmsv/nodeagent/main.c 
b/osaf/services/saf/clmsv/nodeagent/main.c
--- a/osaf/services/saf/clmsv/nodeagent/main.c
+++ b/osaf/services/saf/clmsv/nodeagent/main.c
@@ -640,7 +640,7 @@ int main(int argc, char *argv[])
                        } else {
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(usr1_sel_obj, true, true);
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
 
                                if ((error = clmna_amf_init(clmna_cb)) != 
NCSCC_RC_SUCCESS) {
                                        LOG_ER("AMF Initialization failed. %u", 
error);
diff --git a/osaf/services/saf/immsv/immd/immd_main.c 
b/osaf/services/saf/immsv/immd/immd_main.c
--- a/osaf/services/saf/immsv/immd/immd_main.c
+++ b/osaf/services/saf/immsv/immd/immd_main.c
@@ -300,7 +300,7 @@ int main(int argc, char *argv[])
                        } else {
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(immd_cb->usr1_sel_obj, 
true, true);
-                               ncs_sel_obj_destroy(immd_cb->usr1_sel_obj);
+                               ncs_sel_obj_destroy(&immd_cb->usr1_sel_obj);
 
                                if (immd_amf_init(immd_cb) != NCSCC_RC_SUCCESS)
                                        break;
diff --git a/osaf/services/saf/immsv/immnd/immnd_main.c 
b/osaf/services/saf/immsv/immnd/immnd_main.c
--- a/osaf/services/saf/immsv/immnd/immnd_main.c
+++ b/osaf/services/saf/immsv/immnd/immnd_main.c
@@ -314,7 +314,7 @@ int main(int argc, char *argv[])
                                } else {
                                        TRACE("SIGUSR1 event rec");
                                        
ncs_sel_obj_rmv_ind(immnd_cb->usr1_sel_obj, true, true);
-                                       
ncs_sel_obj_destroy(immnd_cb->usr1_sel_obj);
+                                       
ncs_sel_obj_destroy(&immnd_cb->usr1_sel_obj);
 
                                        if (immnd_amf_init(immnd_cb) != 
NCSCC_RC_SUCCESS)
                                                break;
diff --git a/osaf/services/saf/logsv/lgs/lgs_main.c 
b/osaf/services/saf/logsv/lgs/lgs_main.c
--- a/osaf/services/saf/logsv/lgs/lgs_main.c
+++ b/osaf/services/saf/logsv/lgs/lgs_main.c
@@ -473,7 +473,7 @@ int main(int argc, char *argv[])
                        } else {
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(usr1_sel_obj, true, true);
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
 
                                if (lgs_amf_init(lgs_cb) != NCSCC_RC_SUCCESS)
                                        break;
diff --git a/osaf/services/saf/ntfsv/ntfs/ntfs_main.c 
b/osaf/services/saf/ntfsv/ntfs/ntfs_main.c
--- a/osaf/services/saf/ntfsv/ntfs/ntfs_main.c
+++ b/osaf/services/saf/ntfsv/ntfs/ntfs_main.c
@@ -336,7 +336,7 @@ int main(int argc, char *argv[])
 
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(usr1_sel_obj, true, true);
-                               ncs_sel_obj_destroy(usr1_sel_obj);
+                               ncs_sel_obj_destroy(&usr1_sel_obj);
 
                                if (ntfs_amf_init() != SA_AIS_OK)
                                        break;
diff --git a/osaf/services/saf/plmsv/plms/plms_main.c 
b/osaf/services/saf/plmsv/plms/plms_main.c
--- a/osaf/services/saf/plmsv/plms/plms_main.c
+++ b/osaf/services/saf/plmsv/plms/plms_main.c
@@ -485,7 +485,7 @@ int main(int argc, char *argv[])
                        } else {
                                TRACE("SIGUSR1 event rec");
                                ncs_sel_obj_rmv_ind(plms_cb->usr1_sel_obj, 
true,true);
-                               ncs_sel_obj_destroy(plms_cb->usr1_sel_obj);
+                               ncs_sel_obj_destroy(&plms_cb->usr1_sel_obj);
                                
                                if (plms_amf_register() != NCSCC_RC_SUCCESS)
                                        break;

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to