From ede8a6a7a1f93350f8ad62c4fd9b10607b7ff4b4 Mon Sep 17 00:00:00 2001 From: Brad Penoff Date: Tue, 20 Nov 2007 06:02:08 +0000 Subject: [PATCH] adjusting for Linux when sctp_recvmsg returns 0 for remote close This commit was SVN r16742. --- ompi/mca/btl/sctp/btl_sctp_component.c | 2 ++ ompi/mca/btl/sctp/btl_sctp_endpoint.c | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ompi/mca/btl/sctp/btl_sctp_component.c b/ompi/mca/btl/sctp/btl_sctp_component.c index 5c7cec9fca..56b02d1976 100644 --- a/ompi/mca/btl/sctp/btl_sctp_component.c +++ b/ompi/mca/btl/sctp/btl_sctp_component.c @@ -930,6 +930,8 @@ static void mca_btl_sctp_component_recv_handler(int sd, short flags, void* user) CLOSE_THE_SOCKET(sd); return; } + SCTP_BTL_ERROR(("mca_btl_sctp_component_recv_handler() sd=%d, got %d byte guid.\n", sd, retval)); + ORTE_PROCESS_NAME_NTOH(guid); /* lookup the corresponding process */ diff --git a/ompi/mca/btl/sctp/btl_sctp_endpoint.c b/ompi/mca/btl/sctp/btl_sctp_endpoint.c index b29cc423db..e3e0b93afa 100644 --- a/ompi/mca/btl/sctp/btl_sctp_endpoint.c +++ b/ompi/mca/btl/sctp/btl_sctp_endpoint.c @@ -780,10 +780,10 @@ static int mca_btl_sctp_endpoint_recv_blocking(mca_btl_base_endpoint_t* btl_endp */ retval = sctp_recvmsg(btl_endpoint->endpoint_sd, (char *)ptr+cnt, size-cnt, 0, 0, &sri, &msg_flags); - if(retval >= 0) { SCTP_BTL_ERROR(("mca_btl_sctp_endpoint_recv_blocking() sd=%d, got %d bytes.\n", btl_endpoint->endpoint_sd, retval)); } /* remote closed connection */ - if(retval == -1 && (opal_socket_errno == ECONNRESET || opal_socket_errno == EBADF)) { + if((retval == -1 && (opal_socket_errno == ECONNRESET || opal_socket_errno == EBADF)) + || retval == 0) { mca_btl_sctp_endpoint_close(btl_endpoint); return -1; } @@ -797,6 +797,8 @@ static int mca_btl_sctp_endpoint_recv_blocking(mca_btl_base_endpoint_t* btl_endp } continue; } + SCTP_BTL_ERROR(("mca_btl_sctp_endpoint_recv_blocking() sd=%d, got %d bytes.\n", btl_endpoint->endpoint_sd, retval)); + cnt += retval; } return cnt;