diff --git a/stream/dap_stream.c b/stream/dap_stream.c index b58f856da002d3e4800f9f6c5d6d8d2e1b7c5cfd..0017e663b55356603fa63af5e2ce58b94ab5d110 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;