diff --git a/src/mca/ptl/tcp/src/ptl_tcp_component.c b/src/mca/ptl/tcp/src/ptl_tcp_component.c index c0784b2bf4..5968e7cf50 100644 --- a/src/mca/ptl/tcp/src/ptl_tcp_component.c +++ b/src/mca/ptl/tcp/src/ptl_tcp_component.c @@ -532,11 +532,9 @@ int mca_ptl_tcp_component_control(int param, void* value, size_t size) case MCA_PTL_ENABLE: if(*(int*)value) { ompi_event_add(&mca_ptl_tcp_component.tcp_recv_event, 0); -#if OMPI_HAVE_THREADS == 0 - if(mca_ptl_tcp_component.tcp_num_ptl_modules) { + if(ompi_hash_table_get_size(&mca_ptl_tcp_component.tcp_procs) > 0) { ompi_progress_events(OMPI_EVLOOP_NONBLOCK); } -#endif } else { ompi_event_del(&mca_ptl_tcp_component.tcp_recv_event); } diff --git a/src/mca/ptl/tcp/src/ptl_tcp_proc.c b/src/mca/ptl/tcp/src/ptl_tcp_proc.c index e243edc6e6..e72557329d 100644 --- a/src/mca/ptl/tcp/src/ptl_tcp_proc.c +++ b/src/mca/ptl/tcp/src/ptl_tcp_proc.c @@ -194,7 +194,9 @@ int mca_ptl_tcp_proc_remove(mca_ptl_tcp_proc_t* ptl_proc, mca_ptl_base_peer_t* p if(ptl_proc->proc_peers[i] == ptl_peer) { memmove(ptl_proc->proc_peers+i, ptl_proc->proc_peers+i+1, (ptl_proc->proc_peer_count-i-1)*sizeof(mca_ptl_base_peer_t*)); - ptl_proc->proc_peer_count--; + if(--ptl_proc->proc_peer_count == 0) { + OBJ_RELEASE(ptl_proc); + } ptl_peer->peer_addr->addr_inuse--; break; }