diff --git a/opal/mca/btl/tcp/btl_tcp_endpoint.c b/opal/mca/btl/tcp/btl_tcp_endpoint.c index 7f15e6d59f..7b6e514f1c 100644 --- a/opal/mca/btl/tcp/btl_tcp_endpoint.c +++ b/opal/mca/btl/tcp/btl_tcp_endpoint.c @@ -527,10 +527,8 @@ void mca_btl_tcp_endpoint_close(mca_btl_base_endpoint_t* btl_endpoint) frag = (mca_btl_tcp_frag_t*)opal_list_remove_first(&btl_endpoint->endpoint_frags); } - } else { - btl_endpoint->endpoint_state = MCA_BTL_TCP_CLOSED; } - + btl_endpoint->endpoint_state = MCA_BTL_TCP_CLOSED; } /* @@ -542,6 +540,7 @@ void mca_btl_tcp_endpoint_close(mca_btl_base_endpoint_t* btl_endpoint) static void mca_btl_tcp_endpoint_connected(mca_btl_base_endpoint_t* btl_endpoint) { /* setup socket options */ + assert( MCA_BTL_TCP_CONNECTED != btl_endpoint->endpoint_state ); btl_endpoint->endpoint_state = MCA_BTL_TCP_CONNECTED; btl_endpoint->endpoint_retries = 0; MCA_BTL_TCP_ENDPOINT_DUMP(1, btl_endpoint, true, "READY [endpoint_connected]"); diff --git a/opal/mca/btl/tcp/btl_tcp_frag.c b/opal/mca/btl/tcp/btl_tcp_frag.c index 947260933f..214f839216 100644 --- a/opal/mca/btl/tcp/btl_tcp_frag.c +++ b/opal/mca/btl/tcp/btl_tcp_frag.c @@ -200,18 +200,18 @@ bool mca_btl_tcp_frag_recv(mca_btl_tcp_frag_t* frag, int sd) cnt = -1; while( cnt < 0 ) { cnt = readv(sd, frag->iov_ptr, num_vecs); - if( 0 < cnt ) goto advance_iov_position; - if( cnt == 0 ) { + if( 0 < cnt ) goto advance_iov_position; + if( cnt == 0 ) { btl_endpoint->endpoint_state = MCA_BTL_TCP_FAILED; - mca_btl_tcp_endpoint_close(btl_endpoint); - return false; - } - switch(opal_socket_errno) { - case EINTR: - continue; - case EWOULDBLOCK: - return false; - case EFAULT: + mca_btl_tcp_endpoint_close(btl_endpoint); + return false; + } + switch(opal_socket_errno) { + case EINTR: + continue; + case EWOULDBLOCK: + return false; + case EFAULT: BTL_ERROR(("mca_btl_tcp_frag_recv: readv error (%p, %lu)\n\t%s(%lu)\n", frag->iov_ptr[0].iov_base, (unsigned long) frag->iov_ptr[0].iov_len, strerror(opal_socket_errno), (unsigned long) frag->iov_cnt));