Properly set address reuse on the oob tcp listen socket.
Remove some temporary code. This commit was SVN r2040.
Этот коммит содержится в:
родитель
4e34dc89ed
Коммит
3db2f05dc3
@ -140,6 +140,7 @@ static void mca_oob_tcp_accept(void)
|
||||
static int mca_oob_tcp_create_listen(void)
|
||||
{
|
||||
int flags;
|
||||
int optval;
|
||||
struct sockaddr_in inaddr;
|
||||
ompi_socklen_t addrlen;
|
||||
|
||||
@ -149,7 +150,14 @@ static int mca_oob_tcp_create_listen(void)
|
||||
ompi_output(0,"mca_oob_tcp_component_init: socket() failed with errno=%d", errno);
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
optval = 1;
|
||||
if(setsockopt(mca_oob_tcp_component.tcp_listen_sd, SOL_SOCKET,
|
||||
SO_REUSEADDR, &optval, sizeof(optval)) < 0) {
|
||||
ompi_output(0,
|
||||
"mca_oob_tcp_finalize: setsockopt(SO_REUSEADDR) failed with errno=%d\n",
|
||||
errno);
|
||||
}
|
||||
|
||||
/* bind to all addresses and dynamically assigned port */
|
||||
memset(&inaddr, 0, sizeof(inaddr));
|
||||
inaddr.sin_family = AF_INET;
|
||||
@ -305,18 +313,8 @@ mca_oob_t* mca_oob_tcp_init(bool *allow_multi_user_threads, bool *have_hidden_th
|
||||
*/
|
||||
int mca_oob_tcp_finalize(mca_oob_t* oob)
|
||||
{
|
||||
int optval;
|
||||
mca_oob_tcp_peer_t * peer;
|
||||
if (mca_oob_tcp_component.tcp_listen_sd >= 0) {
|
||||
optval = 1;
|
||||
if(setsockopt(mca_oob_tcp_component.tcp_listen_sd, SOL_SOCKET,
|
||||
SO_REUSEADDR, &optval, sizeof(optval)) < 0) {
|
||||
ompi_output(0,
|
||||
"mca_oob_tcp_finalize: setsockopt(SO_REUSEADDR) failed with errno=%d\n",
|
||||
errno);
|
||||
}
|
||||
/*** temporarily disable the removal of the revieve event
|
||||
* to prevent segfaults */
|
||||
ompi_event_del(&mca_oob_tcp_component.tcp_recv_event);
|
||||
if(0 != close(mca_oob_tcp_component.tcp_listen_sd)) {
|
||||
ompi_output(0, "mca_oob_tcp_finalize: error closing listen socket. errno=%d", errno);
|
||||
|
@ -55,14 +55,7 @@ static void mca_oob_tcp_peer_construct(mca_oob_tcp_peer_t* peer)
|
||||
*/
|
||||
static void mca_oob_tcp_peer_destruct(mca_oob_tcp_peer_t * peer)
|
||||
{
|
||||
/* temporarily not delete the events to prevent segfaults */
|
||||
mca_oob_tcp_peer_close(peer);
|
||||
/*if(peer->peer_state != MCA_OOB_TCP_CLOSED &&
|
||||
peer->peer_sd >= 0) {
|
||||
ompi_event_del(&peer->peer_send_event);
|
||||
close(peer->peer_sd);
|
||||
peer->peer_sd = -1;
|
||||
}*/
|
||||
OBJ_DESTRUCT(&(peer->peer_send_queue));
|
||||
OBJ_DESTRUCT(&(peer->peer_lock));
|
||||
}
|
||||
|
@ -77,7 +77,6 @@ void callback(int status, const ompi_process_name_t * peer,
|
||||
void callback(int status, const ompi_process_name_t * peer,
|
||||
const struct iovec * msg, int count, int tag, void * cbdata)
|
||||
{
|
||||
fprintf(stderr, "caqllback called on num %d.\n", (int) cbdata);
|
||||
if(0 != tag) {
|
||||
test_failure("Bad tag.");
|
||||
}
|
||||
@ -155,8 +154,8 @@ int main(int argc, char ** argv)
|
||||
} else {
|
||||
test_success();
|
||||
}
|
||||
if(!compare_iovec(recv_msg1, send_msg1, 3)) {
|
||||
test_failure("compare 1 is wrong");
|
||||
if(!compare_iovec(recv_msg1, send_msg1, 4)) {
|
||||
test_failure("compare 2 is wrong");
|
||||
}
|
||||
break;
|
||||
case MSG_TYPE_2:
|
||||
@ -165,8 +164,8 @@ int main(int argc, char ** argv)
|
||||
} else {
|
||||
test_success();
|
||||
}
|
||||
if(!compare_iovec(recv_msg1, send_msg1, 3)) {
|
||||
test_failure("compare 1 is wrong");
|
||||
if(!compare_iovec(recv_msg2, send_msg2, 3)) {
|
||||
test_failure("compare 3 is wrong");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user