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)
|
static int mca_oob_tcp_create_listen(void)
|
||||||
{
|
{
|
||||||
int flags;
|
int flags;
|
||||||
|
int optval;
|
||||||
struct sockaddr_in inaddr;
|
struct sockaddr_in inaddr;
|
||||||
ompi_socklen_t addrlen;
|
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);
|
ompi_output(0,"mca_oob_tcp_component_init: socket() failed with errno=%d", errno);
|
||||||
return OMPI_ERROR;
|
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 */
|
/* bind to all addresses and dynamically assigned port */
|
||||||
memset(&inaddr, 0, sizeof(inaddr));
|
memset(&inaddr, 0, sizeof(inaddr));
|
||||||
inaddr.sin_family = AF_INET;
|
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 mca_oob_tcp_finalize(mca_oob_t* oob)
|
||||||
{
|
{
|
||||||
int optval;
|
|
||||||
mca_oob_tcp_peer_t * peer;
|
mca_oob_tcp_peer_t * peer;
|
||||||
if (mca_oob_tcp_component.tcp_listen_sd >= 0) {
|
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);
|
ompi_event_del(&mca_oob_tcp_component.tcp_recv_event);
|
||||||
if(0 != close(mca_oob_tcp_component.tcp_listen_sd)) {
|
if(0 != close(mca_oob_tcp_component.tcp_listen_sd)) {
|
||||||
ompi_output(0, "mca_oob_tcp_finalize: error closing listen socket. errno=%d", errno);
|
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)
|
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);
|
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_send_queue));
|
||||||
OBJ_DESTRUCT(&(peer->peer_lock));
|
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,
|
void callback(int status, const ompi_process_name_t * peer,
|
||||||
const struct iovec * msg, int count, int tag, void * cbdata)
|
const struct iovec * msg, int count, int tag, void * cbdata)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "caqllback called on num %d.\n", (int) cbdata);
|
|
||||||
if(0 != tag) {
|
if(0 != tag) {
|
||||||
test_failure("Bad tag.");
|
test_failure("Bad tag.");
|
||||||
}
|
}
|
||||||
@ -155,8 +154,8 @@ int main(int argc, char ** argv)
|
|||||||
} else {
|
} else {
|
||||||
test_success();
|
test_success();
|
||||||
}
|
}
|
||||||
if(!compare_iovec(recv_msg1, send_msg1, 3)) {
|
if(!compare_iovec(recv_msg1, send_msg1, 4)) {
|
||||||
test_failure("compare 1 is wrong");
|
test_failure("compare 2 is wrong");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MSG_TYPE_2:
|
case MSG_TYPE_2:
|
||||||
@ -165,8 +164,8 @@ int main(int argc, char ** argv)
|
|||||||
} else {
|
} else {
|
||||||
test_success();
|
test_success();
|
||||||
}
|
}
|
||||||
if(!compare_iovec(recv_msg1, send_msg1, 3)) {
|
if(!compare_iovec(recv_msg2, send_msg2, 3)) {
|
||||||
test_failure("compare 1 is wrong");
|
test_failure("compare 3 is wrong");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user