From dc79b7ba00ba568e25f0c18f68ea3928149c9ce2 Mon Sep 17 00:00:00 2001
From: Robin Mueller <muellerr@irs.uni-stuttgart.de>
Date: Fri, 2 Sep 2022 11:38:46 +0200
Subject: [PATCH] delete metadata after processing

---
 src/fsfw/cfdp/handler/DestHandler.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/fsfw/cfdp/handler/DestHandler.cpp b/src/fsfw/cfdp/handler/DestHandler.cpp
index 7271c19c..e7d14db0 100644
--- a/src/fsfw/cfdp/handler/DestHandler.cpp
+++ b/src/fsfw/cfdp/handler/DestHandler.cpp
@@ -21,13 +21,15 @@ ReturnValue_t cfdp::DestHandler::performStateMachine() {
   if (step == TransactionStep::IDLE) {
     ReturnValue_t status = returnvalue::OK;
     ReturnValue_t result;
-    for (const auto& info : dp.packetListRef) {
-      if (info.pduType == PduType::FILE_DIRECTIVE and
-          info.directiveType == FileDirectives::METADATA) {
-        result = handleMetadataPdu(info);
+    for(auto infoIter = dp.packetListRef.begin(); infoIter != dp.packetListRef.end();) {
+      if (infoIter->pduType == PduType::FILE_DIRECTIVE and
+          infoIter->directiveType == FileDirectives::METADATA) {
+        result = handleMetadataPdu(*infoIter);
         if (result != OK) {
           status = result;
         }
+        fp.tcStore->deleteData(infoIter->storeId);
+        dp.packetListRef.erase(infoIter++);
       }
     }
     if (step != TransactionStep::IDLE) {