From 2dec0d3771822254fc6bfc49e54828f1f957b9e2 Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Fri, 13 Nov 2020 17:58:59 +0700 Subject: [PATCH] [*] One another fix for RDHUP --- CMakeLists.txt | 2 +- dap-sdk/net/core/dap_worker.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 721a4527a8..202ffb262f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 2.8) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.6-42") +set(CELLFRAME_SDK_NATIVE_VERSION "2.6-43") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index 6f18f4ce05..5bf2b8da46 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -185,7 +185,22 @@ void *dap_worker_thread(void *arg) int l_sock_err = 0, l_sock_err_size = sizeof(l_sock_err); //connection already closed (EPOLLHUP - shutdown has been made in both directions) - if( l_flag_hup || l_flag_rdhup) { + if (l_flag_rdhup){ + switch (l_cur->type ){ + case DESCRIPTOR_TYPE_SOCKET_UDP: + case DESCRIPTOR_TYPE_SOCKET: + dap_events_socket_set_readable_unsafe(l_cur, false); + dap_events_socket_set_writable_unsafe(l_cur, false); + l_cur->buf_out_size = 0; + l_cur->flags |= DAP_SOCK_SIGNAL_CLOSE; + l_flag_error = l_flag_write = false; + break; + default:{} + } + if(s_debug_reactor) + log_it(L_INFO,"RDHUP event on esocket %p (%d) type %d", l_cur, l_cur->socket, l_cur->type ); + } + if( l_flag_hup ) { switch (l_cur->type ){ case DESCRIPTOR_TYPE_SOCKET_UDP: case DESCRIPTOR_TYPE_SOCKET: -- GitLab