From cf1ff3ad98cfd9a301107e4f55f04cc0edc161e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?=
 <alexander.lysikov@demlabs.net>
Date: Fri, 2 Aug 2019 12:03:32 +0500
Subject: [PATCH] updated dap_stream_delete()

---
 stream/dap_stream.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/stream/dap_stream.c b/stream/dap_stream.c
index b58f856..0017e66 100644
--- a/stream/dap_stream.c
+++ b/stream/dap_stream.c
@@ -373,6 +373,10 @@ void dap_stream_delete( dap_stream_t *a_stream )
         dap_stream_session_close(a_stream->session->id);
     }
 
+    pthread_mutex_lock(&mutex_keepalive_list);
+    DL_DELETE(stream_keepalive_list, a_stream);
+    stream_dap_delete(a_stream->conn, NULL);
+    pthread_mutex_unlock(&mutex_keepalive_list);
     free(a_stream);
 }
 
@@ -470,11 +474,9 @@ void start_keepalive( dap_stream_t *sid ) {
 //    sid->keepalive_watcher.data = sid;
 //    ev_timer_init (&sid->keepalive_watcher, keepalive_cb, STREAM_KEEPALIVE_TIMEOUT, STREAM_KEEPALIVE_TIMEOUT);
 //    ev_timer_start (keepalive_loop, &sid->keepalive_watcher);
-
   pthread_mutex_lock( &mutex_keepalive_list );
   DL_APPEND( stream_keepalive_list, sid );
   pthread_mutex_unlock( &mutex_keepalive_list );
-
 }
 
 /**
@@ -712,6 +714,8 @@ void stream_dap_data_write(dap_client_remote_t* a_client , void * arg){
  * @param arg Not used
  */
 void stream_dap_delete(dap_client_remote_t* sh, void * arg){
+    if(!sh)
+        return;
     dap_stream_t * sid = DAP_STREAM(sh);
     if(sid == NULL)
         return;
-- 
GitLab