diff --git a/dap_client.c b/dap_client.c
old mode 100755
new mode 100644
index 354dbae89932b495a97dd408c02d2ed3daa094b0..32a47fbb61b4bd24e1f66b3057238fb12bd1a246
--- a/dap_client.c
+++ b/dap_client.c
@@ -171,10 +171,12 @@ void dap_client_delete(dap_client_t * a_client)
 {
     if(!a_client)
         return;
+
     dap_client_disconnect(a_client);
 
     if (DAP_CLIENT_PVT(a_client) )
          dap_client_pvt_delete(DAP_CLIENT_PVT(a_client));
+
     DAP_DELETE(a_client);
 }
 
@@ -289,22 +291,35 @@ void dap_client_request(dap_client_t * a_client, const char * a_full_path, void
  * @param a_client
  * @return
  */
-int dap_client_disconnect(dap_client_t * a_client)
+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_socket ){
-            close (l_client_internal->stream_socket);
-            l_client_internal->stream_socket = 0;
-        }
-        if(l_client_internal->stream_es) {
-            dap_events_socket_delete(l_client_internal->stream_es, true);
-            l_client_internal->stream_es = NULL;
-        }
+    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_remove_and_delete( l_client_internal->stream_es, true );
+//            l_client_internal->stream_es = NULL;
+//        }
+
+<<<<<<< HEAD
+//        l_client_internal->stream_es->signal_close = true;
+        dap_events_kill_socket( l_client_internal->stream_es );
+=======
+        l_client_internal->stream_es->signal_close = true;
+>>>>>>> bec1af426c69b6a96e831f61603c00135bbd9305
+
+//        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;
+
+    log_it(L_DEBUG, "dap_client_disconnect( ) done" );
+
     return -1;
 }
 
diff --git a/dap_client_pool.c b/dap_client_pool.c
old mode 100755
new mode 100644
diff --git a/dap_client_pvt.c b/dap_client_pvt.c
old mode 100755
new mode 100644
index 88d11b6b6be2b552463befb5db16be3f0fc99184..0c8b85145f6703b7b819baa56c47c18d02d1ad91
--- a/dap_client_pvt.c
+++ b/dap_client_pvt.c
@@ -114,17 +114,21 @@ 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 )
         DAP_DELETE(a_client_pvt->active_channels );
+
     if (a_client_pvt->session_key)
         dap_enc_key_delete(a_client_pvt->session_key);
+
     if (a_client_pvt->session_key_open)
         dap_enc_key_delete(a_client_pvt->session_key_open);
+
     if (a_client_pvt->stream_key)
         dap_enc_key_delete(a_client_pvt->stream_key);
-
 }
 
 /**
@@ -831,32 +835,46 @@ void m_stage_stream_streaming(dap_client_t * a_client, void* arg)
  * @param a_es
  * @param arg
  */
-void m_es_stream_delete(dap_events_socket_t * a_es, void * arg)
+void m_es_stream_delete( dap_events_socket_t *a_es, void *arg )
 {
     log_it(L_INFO, "====================================================== stream delete/peer reconnect");
-    dap_client_t* l_client = DAP_CLIENT(a_es);
-    if(l_client == NULL) {
+
+    dap_client_t *l_client = DAP_CLIENT(a_es);
+
+    if ( l_client == NULL ) {
         log_it(L_ERROR, "dap_client is not initialized");
         return;
     }
 
     dap_client_pvt_t * l_client_pvt = DAP_CLIENT_PVT(l_client);
-    if(l_client_pvt == NULL) {
+    if( l_client_pvt == NULL ) {
         log_it(L_ERROR, "dap_client_pvt is not initialized");
         return;
     }
 
-    dap_stream_delete(l_client_pvt->stream);
+    dap_stream_delete( l_client_pvt->stream );
     l_client_pvt->stream = NULL;
-    if(l_client_pvt->client)
-        dap_client_reset(l_client_pvt->client);
+
+    if( l_client_pvt->client )
+        dap_client_reset (l_client_pvt->client );
 
 //    l_client_pvt->client= NULL;
+
     l_client_pvt->stream_es = NULL;
-    dap_stream_session_close(l_client_pvt->stream_session->id);
+
+//    log_it(L_DEBUG, "dap_stream_session_close()");
+//    sleep(3);
+//    dap_stream_session_close(l_client_pvt->stream_session->id);
+
     l_client_pvt->stream_session = NULL;
-    if (l_client_pvt->is_reconnect)
+
+    if ( l_client_pvt->is_reconnect ) {
+        log_it(L_DEBUG, "l_client_pvt->is_reconnect = true");
+
        dap_client_go_stage(l_client_pvt->client, STAGE_STREAM_STREAMING, m_stage_stream_streaming);
+    }
+    else
+        log_it(L_DEBUG, "l_client_pvt->is_reconnect = false");
 }
 
 /**
diff --git a/libdap b/libdap
index 999a4bc46231c2398a8d010dee06628965b3c478..d37b2aa26d2a7cc068529db343a87fd728904d33 160000
--- a/libdap
+++ b/libdap
@@ -1 +1 @@
-Subproject commit 999a4bc46231c2398a8d010dee06628965b3c478
+Subproject commit d37b2aa26d2a7cc068529db343a87fd728904d33
diff --git a/libdap-server b/libdap-server
index 1b3a871d6ec93801f14081de51157bbb703593f1..2520382b703cc4308a6bb017da3b2cc5b95083b9 160000
--- a/libdap-server
+++ b/libdap-server
@@ -1 +1 @@
-Subproject commit 1b3a871d6ec93801f14081de51157bbb703593f1
+Subproject commit 2520382b703cc4308a6bb017da3b2cc5b95083b9
diff --git a/libdap-server-core b/libdap-server-core
index 7c6065bc699760e6e66ee4e80861a3562b2366c1..e5bb9b75237cd702c5980b4070da9842d1f101e2 160000
--- a/libdap-server-core
+++ b/libdap-server-core
@@ -1 +1 @@
-Subproject commit 7c6065bc699760e6e66ee4e80861a3562b2366c1
+Subproject commit e5bb9b75237cd702c5980b4070da9842d1f101e2
diff --git a/libdap-server-udp b/libdap-server-udp
index 19a6376646f497d97bfe1ea3fade1a907c32f76a..1668210c08275ec85f8278a80c66b50e7414d61c 160000
--- a/libdap-server-udp
+++ b/libdap-server-udp
@@ -1 +1 @@
-Subproject commit 19a6376646f497d97bfe1ea3fade1a907c32f76a
+Subproject commit 1668210c08275ec85f8278a80c66b50e7414d61c
diff --git a/libdap-stream b/libdap-stream
index 8fa982b5333a4ea85429fe772987f9d84e5fb96e..550a546222f8b07c0687c9feaea32d3f2c66e87c 160000
--- a/libdap-stream
+++ b/libdap-stream
@@ -1 +1 @@
-Subproject commit 8fa982b5333a4ea85429fe772987f9d84e5fb96e
+Subproject commit 550a546222f8b07c0687c9feaea32d3f2c66e87c
diff --git a/libdap-stream-ch b/libdap-stream-ch
index dfbdaa1df0498069e60ffaf42de963375bffa816..268f422bde88a5f4f254a31b7d52b18d2cad71fc 160000
--- a/libdap-stream-ch
+++ b/libdap-stream-ch
@@ -1 +1 @@
-Subproject commit dfbdaa1df0498069e60ffaf42de963375bffa816
+Subproject commit 268f422bde88a5f4f254a31b7d52b18d2cad71fc