diff --git a/src/dap_events.c b/src/dap_events.c
index 495b556115ba8ca837a0b07cf7065ad4de88b2e0..e646b50b40aac5c72666927b8d1de91d4236f448 100755
--- a/src/dap_events.c
+++ b/src/dap_events.c
@@ -332,6 +332,14 @@ static void *thread_worker_function( void *arg )
         continue;
       }
 
+      //connection already closed (EPOLLHUP - shutdown has been made in both directions)
+      if(events[n].events & EPOLLHUP && events[n].events & EPOLLERR) {
+          log_it( L_DEBUG,"Socket error (EPOLLHUP): 0x%x",events[n].events );
+          if(events[n].events & ~(EPOLLIN | EPOLLOUT))
+              cur->no_close = false;
+          cur->flags |= DAP_SOCK_SIGNAL_CLOSE;
+      }
+
       if ( events[n].events & EPOLLERR ) {
         log_it( L_ERROR,"Socket error: %s",strerror(errno) );
         cur->flags |= DAP_SOCK_SIGNAL_CLOSE;