Hi Nguyen, Thanks for ack. I use that comment because it's short and opposite with comment before posting evt.
/* Increment the cbk count.*/ hdl_list->cnt++; rc = m_NCS_IPC_SEND( ... /* Descrease the cbk count */ smfa_cbk_ok_resp_process() Also, decrease cbk count is mandatory but release resource is only if count == 0. Best Regards, Thuan -----Original Message----- From: Nguyen Luu <nguyen.tk....@dektech.com.au> Sent: Tuesday, July 17, 2018 11:44 AM To: thuan.tran <thuan.t...@dektech.com.au>; nagen...@hasolutions.in; lennart.l...@ericsson.com; gary....@dektech.com.au Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [PATCH 1/1] smf: Increase cbk count before post the evt to client [#2882] Hi Thuan, Ack from me. Just a suggestion for more correct comment (in case there's only one handle matching the callback label): /* Descrease the cbk count */ => /* Remove the agent hdl from the cbk_list */ Thanks, Nguyen On 7/13/2018 10:52 AM, thuan.tran wrote: > Sometimes, callback agent dispatch and fail at saSmfReponse() because > cbk list is empty, agent by somehow handle evt before increase cbk > count. To avoid this, increase cbk count before post the evt. > --- > src/smf/agent/smfa_utils.c | 40 +++++++++++++++++++++----------------- > 1 file changed, 22 insertions(+), 18 deletions(-) > > diff --git a/src/smf/agent/smfa_utils.c b/src/smf/agent/smfa_utils.c > index fb31a9ae1..3436785cd 100644 > --- a/src/smf/agent/smfa_utils.c > +++ b/src/smf/agent/smfa_utils.c > @@ -615,8 +615,8 @@ SMFA_CBK_HDL_LIST *smfa_inv_hdl_add(SaInvocationT inv_id, > SaSmfHandleT hdl) > } > > /*************************************************************************** > -@brief : Match the filter. If matches, post the evt to the > client MBX > - and increment the cbk count of the the corresponding hdl node. > +@brief : Match the filter. If matches, increment the cbk count > of > + the corresponding hdl node and post the evt to the client MBX. > If for a client, more than one scope matches, then those many > no of evts are posted to the MBX. > @param[in] : client_info - For which filter match to be performed. > @@ -694,27 +694,31 @@ uint32_t smfa_cbk_filter_match(SMFA_CLIENT_INFO > *client_info, > &cbk_evt->object_name), > &evt->evt.cbk_evt.object_name); > > - if (m_NCS_IPC_SEND(&client_info->cbk_mbx, > - (NCSCONTEXT)evt, > - NCS_IPC_PRIORITY_NORMAL)) { > - /* Increment the cbk count.*/ > - if (NULL != hdl_list) { > - /* There are two scope id > - * matching for the same hdl.*/ > - } else { > - /* First scope id matching for > - * this hdl.*/ > - hdl_list = smfa_inv_hdl_add( > - cbk_evt->inv_id, > - client_info->client_hdl); > - } > - hdl_list->cnt++; > - rc = NCSCC_RC_SUCCESS; > + /* Increment the cbk count.*/ > + if (NULL != hdl_list) { > + /* There are two scope id > + * matching for the same hdl.*/ > } else { > + /* First scope id matching for > + * this hdl.*/ > + hdl_list = smfa_inv_hdl_add( > + cbk_evt->inv_id, > + client_info->client_hdl); > + } > + hdl_list->cnt++; > + rc = m_NCS_IPC_SEND( > + &client_info->cbk_mbx, > + (NCSCONTEXT)evt, > + NCS_IPC_PRIORITY_NORMAL); > + if (rc != NCSCC_RC_SUCCESS) { > LOG_ER( > "SMFA: Posting to MBX failed. hdl: > %llu, scoe_id: %u", > client_info->client_hdl, > cbk_evt->scope_id); > + /* Descrease the cbk count */ > + smfa_cbk_ok_resp_process( > + client_info->client_hdl, > + cbk_evt->inv_id); > } > > /* If one of the filter matches then go to the ------------------------------------------------------------------------------ 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