diff --git a/dap_client.c b/dap_client.c
index ed7d21d0aabcad1ba697fdc545b14c66c170a609..02f2d730b972b1f8ee466ec7b50edf9c9e9ac9bb 100755
--- a/dap_client.c
+++ b/dap_client.c
@@ -294,7 +294,7 @@ int dap_client_disconnect(dap_client_t * a_client)
     dap_client_pvt_t * l_client_internal = (a_client) ? DAP_CLIENT_PVT(a_client) : NULL;
     if(l_client_internal && l_client_internal->stream_socket){
         if(l_client_internal->stream_es) {
-            dap_events_socket_delete(l_client_internal->stream_es, false);
+            dap_events_socket_delete(l_client_internal->stream_es, true);
             l_client_internal->stream_es = NULL;
         }
         else if (l_client_internal->stream_socket ){
diff --git a/dap_client_pvt.c b/dap_client_pvt.c
index 79800be8a128180e97b249cfeea452bef3e7107d..88d11b6b6be2b552463befb5db16be3f0fc99184 100755
--- a/dap_client_pvt.c
+++ b/dap_client_pvt.c
@@ -855,7 +855,8 @@ void m_es_stream_delete(dap_events_socket_t * a_es, void * arg)
     l_client_pvt->stream_es = NULL;
     dap_stream_session_close(l_client_pvt->stream_session->id);
     l_client_pvt->stream_session = NULL;
-    dap_client_go_stage(l_client_pvt->client, STAGE_STREAM_STREAMING, m_stage_stream_streaming);
+    if (l_client_pvt->is_reconnect)
+       dap_client_go_stage(l_client_pvt->client, STAGE_STREAM_STREAMING, m_stage_stream_streaming);
 }
 
 /**
diff --git a/dap_client_pvt.h b/dap_client_pvt.h
index a9785f9cb553b9a9ceeb36d635fb65db709767a3..38a812107dfe0afee6bbb3bec15d1dbc70fc2b33 100755
--- a/dap_client_pvt.h
+++ b/dap_client_pvt.h
@@ -72,6 +72,7 @@ typedef struct dap_client_internal
     dap_client_callback_t stage_status_error_callback;
 
     bool is_encrypted;
+    bool is_reconnect;
     bool is_close_session;// the last request in session, in the header will be added "SessionCloseAfterRequest: true"
     dap_client_callback_data_size_t request_response_callback;
     dap_client_callback_int_t request_error_callback;