+class AVND_DND_MSG_LIST {
+public:
AVND_MSG msg;
AVND_TMR resp_tmr;
uint32_t opq_hdl;
uint16_t no_retries;
- struct avnd_dnd_msg_list_tag *next;
-} AVND_DND_MSG_LIST;
-
-typedef struct avnd_dnd_list_tag {
- AVND_DND_MSG_LIST *head;
- AVND_DND_MSG_LIST *tail;
-} AVND_DND_LIST;
+};
/*****************************************************************************
Macros to fill the MDS message structure
diff --git a/src/amf/amfnd/di.cc b/src/amf/amfnd/di.cc
index 6f0a76cda..93350e62a 100644
--- a/src/amf/amfnd/di.cc
+++ b/src/amf/amfnd/di.cc
@@ -39,30 +39,7 @@
#include "base/logtrace.h"
#include "amf/amfnd/avnd.h"
-
-/* macro to push the AvD msg parameters (to the end of the list) */
-#define m_AVND_DIQ_REC_PUSH(cb, rec) \
- { \
- AVND_DND_LIST *list = &((cb)->dnd_list); \
- if (!(list->head)) \
- list->head = (rec); \
- else \
- list->tail->next = (rec); \
- list->tail = (rec); \
- }
-
-/* macro to pop the record (from the beginning of the list) */
-#define m_AVND_DIQ_REC_POP(cb, o_rec) \
- { \
- AVND_DND_LIST *list = &((cb)->dnd_list); \
- if (list->head) { \
- (o_rec) = list->head; \
- list->head = (o_rec)->next; \
- (o_rec)->next = 0; \
- if (list->tail == (o_rec)) list->tail = 0; \
- } else \
- (o_rec) = 0; \
- }
+#include <algorithm>
static uint32_t avnd_node_oper_req(AVND_CB *cb, AVSV_PARAM_INFO *param) {
uint32_t rc = NCSCC_RC_FAILURE;
@@ -460,7 +437,9 @@ uint32_t avnd_evt_tmr_rcv_msg_rsp_evh(AVND_CB *cb, AVND_EVT
*evt) {
ncshm_give_hdl(tmr->opq_hdl);
if (rec_tobe_deleted) {
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
+ auto position = std::find(cb->dnd_list.begin(), cb->dnd_list.end(), rec);
+ osafassert(position != cb->dnd_list.end());
+ cb->dnd_list.erase(position);
avnd_diq_rec_del(cb, rec);
}
done:
@@ -471,7 +450,6 @@ done:
void avnd_send_node_up_msg(void) {
AVND_CB *cb = avnd_cb;
AVND_MSG msg = {};
- AVND_DND_MSG_LIST *pending_rec = 0;
uint32_t rc;
TRACE_ENTER();
@@ -487,8 +465,7 @@ void avnd_send_node_up_msg(void) {
}
// We don't send node_up if it has already been sent and waiting for ACK
- for (pending_rec = cb->dnd_list.head; pending_rec != nullptr;
- pending_rec = pending_rec->next) {
+ for (auto pending_rec : cb->dnd_list) {
if (pending_rec->msg.info.avd->msg_type == AVSV_N2D_NODE_UP_MSG) {
TRACE(
"Don't send another node_up since it has been sent and waiting for
ack");
@@ -677,12 +654,11 @@ uint32_t avnd_evt_mds_avd_dn_evh(AVND_CB *cb, AVND_EVT
*evt) {
if (cb->scs_absence_max_duration == 0) {
// check for pending messages TO director
- if ((cb->dnd_list.head != nullptr)) {
+ if ((cb->dnd_list.empty() == false)) {
uint32_t no_pending_msg = 0;
- AVND_DND_MSG_LIST *rec = 0;
- for (rec = cb->dnd_list.head; rec != nullptr;
- rec = rec->next, no_pending_msg++) {
+ for (auto rec : cb->dnd_list) {
osafassert(rec->msg.type == AVND_MSG_AVD);
+ no_pending_msg++;
}
/* Don't issue reboot if it has been already issued.*/
@@ -1115,7 +1091,9 @@ uint32_t avnd_di_msg_send(AVND_CB *cb, AVND_MSG *msg) {
done:
if (NCSCC_RC_SUCCESS != rc && rec) {
/* pop & delete */
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
+ auto position = std::find(cb->dnd_list.begin(), cb->dnd_list.end(), rec);
+ osafassert(position != cb->dnd_list.end());
+ cb->dnd_list.erase(position);
avnd_diq_rec_del(cb, rec);
}
TRACE_LEAVE2("%u", rc);
@@ -1252,21 +1230,29 @@ uint32_t avnd_di_node_down_msg_send(AVND_CB *cb)
Notes : None.
******************************************************************************/
void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t mid) {
- AVND_DND_MSG_LIST *rec = 0;
-
- /* find & pop the matching record */
- m_AVND_DIQ_REC_FIND(cb, mid, rec);
- if (rec) {
- if (rec->msg.info.avd->msg_type == AVSV_N2D_NODE_DOWN_MSG) {
- // first to stop timer to avoid processing timeout event
- // then perform last step clean up
- avnd_stop_tmr(cb, &rec->resp_tmr);
- avnd_last_step_clean(cb);
+ TRACE_ENTER2("%u", mid);
+
+ for (auto iter = cb->dnd_list.begin(); iter != cb->dnd_list.end(); ++iter) {
+ auto rec = *iter;
+ osafassert(rec->msg.type == AVND_MSG_AVD);
+ const uint32_t msg_id =
*(reinterpret_cast<uint32_t*>(&(rec->msg.info.avd->msg_info)));
+
+ // matching record
+ if (msg_id == mid) {
+ if (rec->msg.info.avd->msg_type == AVSV_N2D_NODE_DOWN_MSG) {
+ // first to stop timer to avoid processing timeout event
+ // then perform last step clean up
+ avnd_stop_tmr(cb, &rec->resp_tmr);
+ avnd_last_step_clean(cb);
+ }
+ cb->dnd_list.erase(iter);
+ TRACE("remove msg %u from queue", msg_id);
+ avnd_diq_rec_del(cb, rec);
+ break;
}
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
- avnd_diq_rec_del(cb, rec);
}
+ TRACE_LEAVE2();
return;
}
@@ -1288,62 +1274,55 @@ void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t mid) {
Notes : None.
******************************************************************************/
void avnd_diq_rec_check_buffered_msg(AVND_CB *cb) {
- if ((cb->dnd_list.head != nullptr)) {
- AVND_DND_MSG_LIST *rec = 0;
- bool found = true;
- while (found) {
- found = false;
- for (rec = cb->dnd_list.head; rec != nullptr;) {
- osafassert(rec->msg.type == AVND_MSG_AVD);
- m_AVND_DIQ_REC_POP(cb, rec);
- // Assignment response had been sent, but not ack because
- // last controller go down, reset msg_id and will be resent later
- if (rec->msg.info.avd->msg_type == AVSV_N2D_INFO_SU_SI_ASSIGN_MSG) {
- if (rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id != 0) {
- rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id = 0;
- found = true;
- LOG_NO(
- "Found not-ack su_si_assign msg for SU:'%s', "
- "SI:'%s', ha_state:'%u', msg_act:'%u', single_csi:'%u', "
- "error:'%u', msg_id:'%u'",
- osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
- .n2d_su_si_assign.su_name),
- osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
- .n2d_su_si_assign.si_name),
- rec->msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
- rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
- rec->msg.info.avd->msg_info.n2d_su_si_assign
- .single_csi,
- rec->msg.info.avd->msg_info.n2d_su_si_assign.error,
- rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id);
- }
- m_AVND_DIQ_REC_PUSH(cb, rec);
- break;
- } else if (rec->msg.info.avd->msg_type ==
- AVSV_N2D_OPERATION_STATE_MSG) {
- if (rec->msg.info.avd->msg_info.n2d_opr_state.msg_id != 0) {
- rec->msg.info.avd->msg_info.n2d_opr_state.msg_id = 0;
- found = true;
- LOG_NO(
- "Found not-ack oper_state msg for SU:'%s', "
- "su_oper_state:'%u', node_oper_state:'%u', recovery:'%u'",
- osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
- .n2d_opr_state.su_name),
- rec->msg.info.avd->msg_info.n2d_opr_state
- .su_oper_state,
- rec->msg.info.avd->msg_info.n2d_opr_state
- .node_oper_state,
- rec->msg.info.avd->msg_info.n2d_opr_state.rec_rcvr
- .raw);
- }
- m_AVND_DIQ_REC_PUSH(cb, rec);
- break;
- } else {
- // delete other messages for now
- avnd_diq_rec_del(cb, rec);
- rec = cb->dnd_list.head;
- }
+ for (auto iter = cb->dnd_list.begin(); iter != cb->dnd_list.end();) {
+ auto rec = *iter;
+ osafassert(rec->msg.type == AVND_MSG_AVD);
+ // Assignment response had been sent, but not ack because
+ // last controller go down, reset msg_id and will be resent later
+ if (rec->msg.info.avd->msg_type == AVSV_N2D_INFO_SU_SI_ASSIGN_MSG) {
+ if (rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id != 0) {
+ rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id = 0;
+ LOG_NO(
+ "Found not-ack su_si_assign msg for SU:'%s', "
+ "SI:'%s', ha_state:'%u', msg_act:'%u', single_csi:'%u', "
+ "error:'%u', msg_id:'%u'",
+ osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
+ .n2d_su_si_assign.su_name),
+ osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
+ .n2d_su_si_assign.si_name),
+ rec->msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
+ rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
+ rec->msg.info.avd->msg_info.n2d_su_si_assign
+ .single_csi,
+ rec->msg.info.avd->msg_info.n2d_su_si_assign.error,
+ rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id);
}
+ // leave in dnd_list
+ ++rec;
+ continue;
+ } else if (rec->msg.info.avd->msg_type ==
+ AVSV_N2D_OPERATION_STATE_MSG) {
+ if (rec->msg.info.avd->msg_info.n2d_opr_state.msg_id != 0) {
+ rec->msg.info.avd->msg_info.n2d_opr_state.msg_id = 0;
+ LOG_NO(
+ "Found not-ack oper_state msg for SU:'%s', "
+ "su_oper_state:'%u', node_oper_state:'%u', recovery:'%u'",
+ osaf_extended_name_borrow(&rec->msg.info.avd->msg_info
+ .n2d_opr_state.su_name),
+ rec->msg.info.avd->msg_info.n2d_opr_state
+ .su_oper_state,
+ rec->msg.info.avd->msg_info.n2d_opr_state
+ .node_oper_state,
+ rec->msg.info.avd->msg_info.n2d_opr_state.rec_rcvr
+ .raw);
+ }
+ // leave in dnd_list
+ ++rec;
+ continue;
+ } else {
+ // delete other messages for now
+ iter = cb->dnd_list.erase(iter);
+ avnd_diq_rec_del(cb, rec);
}
}
return;
@@ -1379,7 +1358,7 @@ AVND_DND_MSG_LIST *avnd_diq_rec_add(AVND_CB *cb, AVND_MSG
*msg) {
msg->info.avd = 0;
/* push the record to the AvD msg list */
- m_AVND_DIQ_REC_PUSH(cb, rec);
+ cb->dnd_list.push_back(rec);
TRACE_LEAVE();
return rec;
@@ -1437,87 +1416,69 @@ void avnd_diq_rec_send_buffered_msg(AVND_CB *cb) {
TRACE_ENTER();
// Resend msgs from queue because amfnd dropped during headless
// or headless-synchronization
- if ((cb->dnd_list.head != nullptr)) {
- AVND_DND_MSG_LIST *pending_rec = 0;
- TRACE("Attach msg_id of buffered msg");
- bool found = true;
- while (found) {
- found = false;
- for (pending_rec = cb->dnd_list.head; pending_rec != nullptr;
- pending_rec = pending_rec->next) {
- if (pending_rec->msg.type == AVND_MSG_AVD) {
- // Check su_si_assign message
- if (pending_rec->msg.info.avd->msg_type ==
- AVSV_N2D_INFO_SU_SI_ASSIGN_MSG &&
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id ==
- 0) {
- found = true;
- m_AVND_DIQ_REC_POP(cb, pending_rec);
-#if 1
- // only resend if this SUSI does exist
- AVND_SU *su = cb->sudb.find(Amf::to_string(
-
&pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.su_name));
- if (su != nullptr && su->si_list.n_nodes > 0) {
-#endif
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id =
- ++(cb->snd_msg_id);
- m_AVND_DIQ_REC_PUSH(cb, pending_rec);
- LOG_NO(
- "Found and resend buffered su_si_assign msg for SU:'%s', "
- "SI:'%s', ha_state:'%u', msg_act:'%u', single_csi:'%u', "
- "error:'%u', msg_id:'%u'",
-
osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
- .n2d_su_si_assign.su_name),
-
osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
- .n2d_su_si_assign.si_name),
-
pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign
- .single_csi,
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.error,
- pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id);
-
-#if 1
- } else {
- avnd_msg_content_free(cb, &pending_rec->msg);
- delete pending_rec;
- break;
- }
-#endif
- }
- // Check oper_state message
- else if (pending_rec->msg.info.avd->msg_type ==
- AVSV_N2D_OPERATION_STATE_MSG &&
- pending_rec->msg.info.avd->msg_info.n2d_opr_state.msg_id ==
- 0) {
- found = true;
- m_AVND_DIQ_REC_POP(cb, pending_rec);
- if (pending_rec != nullptr) {
- pending_rec->msg.info.avd->msg_info.n2d_opr_state.msg_id =
- ++(cb->snd_msg_id);
-
- m_AVND_DIQ_REC_PUSH(cb, pending_rec);
- LOG_NO(
- "Found and resend buffered oper_state msg for SU:'%s', "
- "su_oper_state:'%u', node_oper_state:'%u', recovery:'%u'",
-
osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
- .n2d_opr_state.su_name),
- pending_rec->msg.info.avd->msg_info.n2d_opr_state
- .su_oper_state,
- pending_rec->msg.info.avd->msg_info.n2d_opr_state
- .node_oper_state,
- pending_rec->msg.info.avd->msg_info.n2d_opr_state.rec_rcvr
- .raw);
- }
- }
- }
+
+ for (auto iter = cb->dnd_list.begin(); iter != cb->dnd_list.end();) {
+ auto pending_rec = *iter;
+ osafassert(pending_rec->msg.type == AVND_MSG_AVD);
+
+ // Check su_si_assign message
+ if (pending_rec->msg.info.avd->msg_type ==
+ AVSV_N2D_INFO_SU_SI_ASSIGN_MSG &&
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id ==
+ 0) {
+
+ // only resend if this SUSI does exist
+ AVND_SU *su = cb->sudb.find(Amf::to_string(
+ &pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.su_name));
+ if (su != nullptr && su->si_list.n_nodes > 0) {
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id =
+ ++(cb->snd_msg_id);
+ LOG_NO(
+ "Found and resend buffered su_si_assign msg for SU:'%s', "
+ "SI:'%s', ha_state:'%u', msg_act:'%u', single_csi:'%u', "
+ "error:'%u', msg_id:'%u'",
+ osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
+ .n2d_su_si_assign.su_name),
+ osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
+ .n2d_su_si_assign.si_name),
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign
+ .single_csi,
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.error,
+ pending_rec->msg.info.avd->msg_info.n2d_su_si_assign.msg_id);
+ ++iter;
+ } else {
+ iter = cb->dnd_list.erase(iter);
+ avnd_msg_content_free(cb, &pending_rec->msg);
+ delete pending_rec;
}
+ } else if (pending_rec->msg.info.avd->msg_type == AVSV_N2D_OPERATION_STATE_MSG
&&
+ pending_rec->msg.info.avd->msg_info.n2d_opr_state.msg_id == 0) {
+ pending_rec->msg.info.avd->msg_info.n2d_opr_state.msg_id =
+ ++(cb->snd_msg_id);
+
+ LOG_NO(
+ "Found and resend buffered oper_state msg for SU:'%s', "
+ "su_oper_state:'%u', node_oper_state:'%u', recovery:'%u'",
+ osaf_extended_name_borrow(&pending_rec->msg.info.avd->msg_info
+ .n2d_opr_state.su_name),
+ pending_rec->msg.info.avd->msg_info.n2d_opr_state
+ .su_oper_state,
+ pending_rec->msg.info.avd->msg_info.n2d_opr_state
+ .node_oper_state,
+ pending_rec->msg.info.avd->msg_info.n2d_opr_state.rec_rcvr
+ .raw);
+ ++iter;
+ } else {
+ // no other messages should be buffered
+ osafassert(false);
}
- TRACE("retransmit message to amfd");
- for (pending_rec = cb->dnd_list.head; pending_rec != nullptr;
- pending_rec = pending_rec->next) {
- avnd_diq_rec_send(cb, pending_rec);
- }
+ }
+
+ TRACE("retransmit message to amfd");
+ for (auto pending_rec : cb->dnd_list) {
+ avnd_diq_rec_send(cb, pending_rec);
}
TRACE_LEAVE();
return;
diff --git a/src/amf/amfnd/proxy.cc b/src/amf/amfnd/proxy.cc
index c314c280d..95d74b677 100644
--- a/src/amf/amfnd/proxy.cc
+++ b/src/amf/amfnd/proxy.cc
@@ -25,6 +25,7 @@
****************************************************************************/
#include <cinttypes>
+#include <algorithm>
#include "amf/amfnd/avnd.h"
#include "base/osaf_extended_name.h"
@@ -138,7 +139,9 @@ uint32_t avnd_evt_ava_comp_val_req(AVND_CB *cb, AVND_EVT
*evt) {
LOG_ER("avnd_diq_rec_send:failed:%s,Type:%u and Hdl%llx",
comp_name.c_str(), api_info->type, reg->hdl);
/* pop & delete */
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
+ auto position = std::find(cb->dnd_list.begin(), cb->dnd_list.end(), rec);
+ osafassert(position != cb->dnd_list.end());
+ cb->dnd_list.erase(position);
avnd_diq_rec_del(cb, rec);
}
} else {
@@ -173,7 +176,7 @@ uint32_t avnd_evt_ava_comp_val_req(AVND_CB *cb, AVND_EVT
*evt) {
******************************************************************************/
uint32_t avnd_evt_avd_comp_validation_resp_evh(AVND_CB *cb, AVND_EVT *evt) {
uint32_t rc = NCSCC_RC_SUCCESS;
- AVND_DND_MSG_LIST *rec = 0;
+ AVND_DND_MSG_LIST *rec = nullptr;
AVSV_D2N_COMP_VALIDATION_RESP_INFO *info = nullptr;
SaAisErrorT amf_rc = SA_AIS_OK;
AVND_COMP *comp = nullptr, *pxy_comp = nullptr;
@@ -192,7 +195,13 @@ uint32_t avnd_evt_avd_comp_validation_resp_evh(AVND_CB
*cb, AVND_EVT *evt) {
TRACE("%s:MsgId=%u,NodeId=%u,result:%u", info_comp_name.c_str(),
info->msg_id,
info->node_id, info->result);
- m_AVND_DIQ_REC_FIND(cb, info->msg_id, rec);
+ for (auto temp_rec : cb->dnd_list) {
+ osafassert(temp_rec->msg.type == AVND_MSG_AVD);
+ if (*(reinterpret_cast<uint32_t*>(&(temp_rec->msg.info.avd->msg_info))) ==
info->msg_id) {
+ rec = temp_rec;
+ break;
+ }
+ }
if ((nullptr == rec) ||
(memcmp(osaf_extended_name_borrow(&info->comp_name),
@@ -301,7 +310,9 @@ send_resp:
done:
if (rec) {
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
+ auto position = std::find(cb->dnd_list.begin(), cb->dnd_list.end(), rec);
+ osafassert(position != cb->dnd_list.end());
+ cb->dnd_list.erase(position);
avnd_diq_rec_del(cb, rec);
}
diff --git a/src/amf/amfnd/verify.cc b/src/amf/amfnd/verify.cc
index d5ddcea7f..5726ad93f 100644
--- a/src/amf/amfnd/verify.cc
+++ b/src/amf/amfnd/verify.cc
@@ -33,6 +33,7 @@
*/
#include "amf/amfnd/avnd.h"
+#include <algorithm>
/****************************************************************************
Name : avnd_evt_avd_verify_message
@@ -48,8 +49,6 @@
Notes : None.
******************************************************************************/
uint32_t avnd_evt_avd_verify_evh(AVND_CB *cb, AVND_EVT *evt) {
- AVND_DND_LIST *list = &((cb)->dnd_list);
- AVND_DND_MSG_LIST *rec = 0, t_rec;
AVSV_D2N_DATA_VERIFY_MSG_INFO *info;
uint32_t rcv_id;
bool msg_found = false;
@@ -100,9 +99,8 @@ uint32_t avnd_evt_avd_verify_evh(AVND_CB *cb, AVND_EVT *evt)
{
* Otherwise this exercise also helps us in cleaning all the messages
* currently pending in the Queue and are not acked.
*/
- for (rec = list->head; nullptr != rec;) {
- t_rec = *rec;
-
+ for (auto iter = cb->dnd_list.begin(); iter != cb->dnd_list.end();) {
+ auto rec = *iter;
/*
* Since AVD is telling us that he has received till recv_id, we should
* always find msg with ID (rcv_id + 1). Delete and remove all the
@@ -112,10 +110,11 @@ uint32_t avnd_evt_avd_verify_evh(AVND_CB *cb, AVND_EVT
*evt) {
*/
if ((rcv_id + 1) > (*((uint32_t *)(&rec->msg.info.avd->msg_info)))) {
/* pop & delete */
- m_AVND_DIQ_REC_FIND_POP(cb, rec);
+ iter = cb->dnd_list.erase(iter);
TRACE_1("AVND record %u deleted, upon fail-over",
*((uint32_t *)(&rec->msg.info.avd->msg_info)));
avnd_diq_rec_del(cb, rec);
+ continue;
} else {
avnd_diq_rec_send(cb, rec);
@@ -124,8 +123,7 @@ uint32_t avnd_evt_avd_verify_evh(AVND_CB *cb, AVND_EVT *evt) {
msg_found = true;
}
-
- rec = t_rec.next;
+ ++iter;
}
if ((cb->snd_msg_id != info->rcv_id_cnt) && (msg_found == false)) {