Loading ifs/scripts/compile_dep.sh +2 −0 Original line number Diff line number Diff line Loading @@ -282,6 +282,8 @@ if [ "$NA_LAYER" == "cci" ] || [ "$NA_LAYER" == "all" ]; then echo "########## Applying cci addr lookup error handling patch" git apply ${PATCH_DIR}/mercury_cci_verbs_lookup.patch fi echo "########## Applying mercury deregister socket patch" git apply ${PATCH_DIR}/mercury_deregister_sock.patch cd ${CURR}/build $CMAKE -DMERCURY_USE_SELF_FORWARD:BOOL=ON -DMERCURY_USE_CHECKSUMS:BOOL=OFF -DBUILD_TESTING:BOOL=ON \ -DMERCURY_USE_BOOST_PP:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_INSTALL_PREFIX=${INSTALL} \ Loading ifs/scripts/patches/mercury_deregister_sock.patch 0 → 100644 +42 −0 Original line number Diff line number Diff line From fd34de9e4a8b91202f0afb9aa222c06bc9761283 Mon Sep 17 00:00:00 2001 From: Tommaso Tocci <tommaso@tocci.pro> Date: Mon, 2 Jul 2018 11:54:10 +0200 Subject: [PATCH] sm: clear client disconnection event on socket --- src/na/na_sm.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/na/na_sm.c b/src/na/na_sm.c index d96f1b6..01e4110 100644 --- a/src/na/na_sm.c +++ b/src/na/na_sm.c @@ -2134,6 +2134,16 @@ na_sm_progress_sock(na_class_t *na_class, struct na_sm_addr *poll_addr, *progressed = NA_TRUE; } break; + case NA_SM_SOCK_DONE: { + *progressed = NA_FALSE; + ret = na_sm_poll_deregister(na_class, NA_SM_SOCK, poll_addr); + if (ret != NA_SUCCESS) { + NA_LOG_ERROR("Could not deregister socket from poll set"); + ret = NA_PROTOCOL_ERROR; + goto done; + } + } + break; default: /* TODO Silently ignore, no progress */ *progressed = NA_FALSE; @@ -2860,7 +2870,7 @@ na_sm_addr_free(na_class_t *na_class, na_addr_t addr) ret = na_sm_poll_deregister(na_class, NA_SM_SOCK, na_sm_addr); if (ret != NA_SUCCESS) { NA_LOG_ERROR("Could not delete sock from poll set"); - goto done; + //goto done; } /* Remove addr from poll addr queue */ -- 2.18.0 Loading
ifs/scripts/compile_dep.sh +2 −0 Original line number Diff line number Diff line Loading @@ -282,6 +282,8 @@ if [ "$NA_LAYER" == "cci" ] || [ "$NA_LAYER" == "all" ]; then echo "########## Applying cci addr lookup error handling patch" git apply ${PATCH_DIR}/mercury_cci_verbs_lookup.patch fi echo "########## Applying mercury deregister socket patch" git apply ${PATCH_DIR}/mercury_deregister_sock.patch cd ${CURR}/build $CMAKE -DMERCURY_USE_SELF_FORWARD:BOOL=ON -DMERCURY_USE_CHECKSUMS:BOOL=OFF -DBUILD_TESTING:BOOL=ON \ -DMERCURY_USE_BOOST_PP:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_INSTALL_PREFIX=${INSTALL} \ Loading
ifs/scripts/patches/mercury_deregister_sock.patch 0 → 100644 +42 −0 Original line number Diff line number Diff line From fd34de9e4a8b91202f0afb9aa222c06bc9761283 Mon Sep 17 00:00:00 2001 From: Tommaso Tocci <tommaso@tocci.pro> Date: Mon, 2 Jul 2018 11:54:10 +0200 Subject: [PATCH] sm: clear client disconnection event on socket --- src/na/na_sm.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/na/na_sm.c b/src/na/na_sm.c index d96f1b6..01e4110 100644 --- a/src/na/na_sm.c +++ b/src/na/na_sm.c @@ -2134,6 +2134,16 @@ na_sm_progress_sock(na_class_t *na_class, struct na_sm_addr *poll_addr, *progressed = NA_TRUE; } break; + case NA_SM_SOCK_DONE: { + *progressed = NA_FALSE; + ret = na_sm_poll_deregister(na_class, NA_SM_SOCK, poll_addr); + if (ret != NA_SUCCESS) { + NA_LOG_ERROR("Could not deregister socket from poll set"); + ret = NA_PROTOCOL_ERROR; + goto done; + } + } + break; default: /* TODO Silently ignore, no progress */ *progressed = NA_FALSE; @@ -2860,7 +2870,7 @@ na_sm_addr_free(na_class_t *na_class, na_addr_t addr) ret = na_sm_poll_deregister(na_class, NA_SM_SOCK, na_sm_addr); if (ret != NA_SUCCESS) { NA_LOG_ERROR("Could not delete sock from poll set"); - goto done; + //goto done; } /* Remove addr from poll addr queue */ -- 2.18.0