From e69161579d68be7ac89eb3c034cdbaaa965cca29 Mon Sep 17 00:00:00 2001
From: Dmitrii <naidv88@gmail.com>
Date: Fri, 14 Jan 2022 22:53:44 +0500
Subject: [PATCH] [*] fix bug

---
 modules/channel/chain/dap_stream_ch_chain.c | 37 ++++-----------------
 1 file changed, 6 insertions(+), 31 deletions(-)

diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index b765f4662b..c8066786bd 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -813,8 +813,10 @@ static bool s_chain_timer_callback(void *a_arg)
     dap_stream_ch_chain_t *l_ch_chain = DAP_STREAM_CH_CHAIN(l_ch);
     if (!l_ch_chain->was_active) {
         if (l_ch_chain->state != CHAIN_STATE_IDLE) {
-            dap_stream_ch_chain_go_idle_and_free_list(l_ch_chain);
-        }
+            dap_stream_ch_chain_go_idle(l_ch_chain);
+        } else {
+			s_free_log_list(l_ch_chain);
+		}
         DAP_DELETE(a_arg);
         l_ch_chain->activity_timer = NULL;
         return false;
@@ -1421,23 +1423,11 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
 
 
 /**
- * @brief dap_stream_ch_chain_go_idle_and_free_list
+ * @brief dap_stream_ch_chain_go_idle_and_free_log_list
  * @param a_ch_chain
  */
-void dap_stream_ch_chain_go_idle_and_free_list ( dap_stream_ch_chain_t * a_ch_chain)
+void s_free_log_list ( dap_stream_ch_chain_t * a_ch_chain)
 {
-    a_ch_chain->state = CHAIN_STATE_IDLE;
-    if(s_debug_more)
-        log_it(L_INFO, "Go in CHAIN_STATE_IDLE");
-
-    // Cleanup after request
-    memset(&a_ch_chain->request, 0, sizeof(a_ch_chain->request));
-    memset(&a_ch_chain->request_hdr, 0, sizeof(a_ch_chain->request_hdr));
-    if (a_ch_chain->request_atom_iter && a_ch_chain->request_atom_iter->chain &&
-            a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete) {
-                a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete(a_ch_chain->request_atom_iter);
-                a_ch_chain->request_atom_iter = NULL;
-    }
     // free log list
     dap_db_log_list_delete(a_ch_chain->request_db_log);
     a_ch_chain->request_db_log = NULL;
@@ -1470,21 +1460,6 @@ void dap_stream_ch_chain_go_idle ( dap_stream_ch_chain_t * a_ch_chain)
                 a_ch_chain->request_atom_iter->chain->callback_atom_iter_delete(a_ch_chain->request_atom_iter);
                 a_ch_chain->request_atom_iter = NULL;
     }
-    // free log list
-#if 0
-    dap_db_log_list_delete(a_ch_chain->request_db_log);
-    a_ch_chain->request_db_log = NULL;
-    dap_stream_ch_chain_hash_item_t *l_hash_item = NULL, *l_tmp = NULL;
-    HASH_ITER(hh, a_ch_chain->remote_gdbs, l_hash_item, l_tmp) {
-        HASH_DEL(a_ch_chain->remote_gdbs, l_hash_item);
-        DAP_DELETE(l_hash_item);
-    }
-    HASH_ITER(hh, a_ch_chain->remote_atoms, l_hash_item, l_tmp) {
-        HASH_DEL(a_ch_chain->remote_atoms, l_hash_item);
-        DAP_DELETE(l_hash_item);
-    }
-    a_ch_chain->remote_atoms = a_ch_chain->remote_gdbs = NULL;
-#endif
 }
 
 /**
-- 
GitLab