diff --git a/dap_client.c b/dap_client.c
index 134a0f1f79309a078047ac2431bdcd6e93ece8f3..201a74c9079987029e3cf18b40040f418c715f60 100755
--- a/dap_client.c
+++ b/dap_client.c
@@ -169,6 +169,8 @@ void dap_client_reset(dap_client_t * a_client)
  */
 void dap_client_delete(dap_client_t * a_client)
 {
+    if(!a_client)
+        return;
     dap_client_disconnect(a_client);
 
     dap_client_pvt_delete(DAP_CLIENT_PVT(a_client));
@@ -288,13 +290,16 @@ void dap_client_request(dap_client_t * a_client, const char * a_full_path, void
  */
 int dap_client_disconnect(dap_client_t * a_client)
 {
-    dap_client_pvt_t * l_client_internal = DAP_CLIENT_PVT(a_client);
-    if(l_client_internal->stream_socket){
-        if ( l_client_internal->stream_es)
-            dap_events_socket_delete(l_client_internal->stream_es,false);
-        else if (l_client_internal->stream_socket )
+    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);
+            l_client_internal->stream_es = NULL;
+        }
+        else if (l_client_internal->stream_socket ){
             close (l_client_internal->stream_socket);
-
+            l_client_internal->stream_socket = 0;
+        }
         return 1;
     }
     //l_client_internal->stream_socket = 0;
diff --git a/dap_client_pvt.c b/dap_client_pvt.c
index 78f3643532477537d98bd0076d2dd9686bc1046c..79800be8a128180e97b249cfeea452bef3e7107d 100755
--- a/dap_client_pvt.c
+++ b/dap_client_pvt.c
@@ -112,6 +112,8 @@ void dap_client_pvt_new(dap_client_pvt_t * a_client_internal)
  */
 void dap_client_pvt_delete(dap_client_pvt_t * a_client_pvt)
 {
+    if(!a_client_pvt)
+        return;
     if(a_client_pvt->session_key_id)
         DAP_DELETE(a_client_pvt->session_key_id);
     if ( a_client_pvt->active_channels )