Hi Hans
Ack (review only). Would this also do the job?
diff --git a/src/amf/amfnd/di.cc b/src/amf/amfnd/di.cc
index 61cea97..d678bd4 100644
--- a/src/amf/amfnd/di.cc
+++ b/src/amf/amfnd/di.cc
@@ -1285,13 +1285,15 @@ void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t mid)
{
// matching record
if (msg_id == mid) {
+ cb->dnd_list.erase(iter);
+ // iter is now invalid, exit iterator loop asap
+
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;
On 28/10/17, 2:40 am, "Hans Nordeback" <[email protected]> wrote:
---
src/amf/amfnd/di.cc | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/amf/amfnd/di.cc b/src/amf/amfnd/di.cc
index 7aac34260..6e5aaf54b 100644
--- a/src/amf/amfnd/di.cc
+++ b/src/amf/amfnd/di.cc
@@ -1293,7 +1293,9 @@ uint32_t avnd_di_node_down_msg_send(AVND_CB *cb)
void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t mid) {
TRACE_ENTER2("%u", mid);
- for (auto iter = cb->dnd_list.begin(); iter != cb->dnd_list.end();
++iter) {
+ std::vector<AVND_DND_MSG_LIST*> tmp = cb->dnd_list;
+
+ for (auto iter = tmp.begin(); iter != tmp.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)));
@@ -1306,12 +1308,13 @@ void avnd_di_msg_ack_process(AVND_CB *cb, uint32_t
mid) {
avnd_stop_tmr(cb, &rec->resp_tmr);
avnd_last_step_clean(cb);
}
- cb->dnd_list.erase(iter);
+ tmp.erase(iter);
TRACE("remove msg %u from queue", msg_id);
avnd_diq_rec_del(cb, rec);
break;
}
}
+ cb->dnd_list = tmp;
TRACE_LEAVE2();
return;
--
2.14.2
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel