fixed ipv6/ipv4 switchover when ipv6 node is not reachable
This commit is contained in:
parent
ccd0e13c05
commit
c5dc00c084
@ -55,14 +55,25 @@ static int tcpip_connect2(struct addrinfo *ai)
|
|||||||
{
|
{
|
||||||
DEB((D_INFO, "tcpip_connect2: socket error"));
|
DEB((D_INFO, "tcpip_connect2: socket error"));
|
||||||
}
|
}
|
||||||
else break;
|
else
|
||||||
|
{
|
||||||
|
DEB((D_INFO, "tcpip_connect2: socket opened - breaking"));
|
||||||
|
if( connect(fd, rai->ai_addr, rai->ai_addrlen) == -1 )
|
||||||
|
{
|
||||||
|
DEB((D_INFO, "tcpip_connect2: can't connect %s", hbuf));
|
||||||
|
logerr("can't connect to %s", hbuf);
|
||||||
|
close(fd);
|
||||||
|
} else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DEB((D_INFO, "tcpip_connect2: socket not opened - returning"));
|
||||||
hbuf[0]='\0';
|
hbuf[0]='\0';
|
||||||
sbuf[0]='\0';
|
sbuf[0]='\0';
|
||||||
}
|
}
|
||||||
DEB((D_INFO, "tcpip_connect2: socket success: %d", fd));
|
DEB((D_INFO, "tcpip_connect2: socket success: %d", fd));
|
||||||
if (fd < 0 )
|
if (fd < 0 )
|
||||||
{
|
{
|
||||||
|
DEB((D_INFO, "tcpip_connect2: can't create socket"));
|
||||||
logerr("can't create socket");
|
logerr("can't create socket");
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -73,6 +84,7 @@ static int tcpip_connect2(struct addrinfo *ai)
|
|||||||
(void)close(0);
|
(void)close(0);
|
||||||
if( dup(fd) != 0 )
|
if( dup(fd) != 0 )
|
||||||
{
|
{
|
||||||
|
DEB((D_INFO, "tcpip_connect2: can't dup socket to stdin"));
|
||||||
logerr("cannot dup socket to stdin");
|
logerr("cannot dup socket to stdin");
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -92,7 +104,7 @@ static int tcpip_connect2(struct addrinfo *ai)
|
|||||||
logerr("cannot dup stdin to stderr");
|
logerr("cannot dup stdin to stderr");
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
DEB((D_INFO, "tcpip_connect2: stdin|out|err are connected"));
|
||||||
if( fd > 2 ) (void)close(fd);
|
if( fd > 2 ) (void)close(fd);
|
||||||
|
|
||||||
/* switch off stdio buffering */
|
/* switch off stdio buffering */
|
||||||
@ -103,22 +115,24 @@ static int tcpip_connect2(struct addrinfo *ai)
|
|||||||
clearerr(stdin);
|
clearerr(stdin);
|
||||||
clearerr(stdout);
|
clearerr(stdout);
|
||||||
clearerr(stderr);
|
clearerr(stderr);
|
||||||
|
DEB((D_INFO, "tcpip_connect2: start connecting"));
|
||||||
if( connect(0, rai->ai_addr, rai->ai_addrlen) == -1 )
|
//if( connect(0, rai->ai_addr, rai->ai_addrlen) == -1 )
|
||||||
{
|
//{
|
||||||
logerr("can't connect to %s", hbuf);
|
// DEB((D_INFO, "tcpip_connect2: can't connect %s", hbuf));
|
||||||
close(0);
|
// logerr("can't connect to %s", hbuf);
|
||||||
close(1);
|
//
|
||||||
close(2);
|
// close(0);
|
||||||
return 1;
|
// close(1);
|
||||||
}
|
// close(2);
|
||||||
|
// return 1;
|
||||||
|
//}
|
||||||
|
|
||||||
if( tcpip_init() )
|
if( tcpip_init() )
|
||||||
{
|
{
|
||||||
tcpip_shutdown();
|
tcpip_shutdown();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
DEB((D_INFO, "tcpip_connect2: TCP/IP connect success to %s on service %s", hbuf, sbuf));
|
||||||
(void)log("TCP/IP connect success to %s on service %s", hbuf, sbuf);
|
(void)log("TCP/IP connect success to %s on service %s", hbuf, sbuf);
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -56,17 +56,17 @@ function testcomm() {
|
|||||||
# Variant 3 works with sockets and pipes - not pty
|
# Variant 3 works with sockets and pipes - not pty
|
||||||
case ${1} in
|
case ${1} in
|
||||||
"PSTN")
|
"PSTN")
|
||||||
socat -ly -Wlock EXEC:"${CURDIR}/runbfB.sh ${BFBIN} ${BFCFGB}" EXEC:"${CURDIR}/runbfA.sh ${BFBIN} ${BFCFGA}"
|
socat -T5 -ly -Wlock EXEC:"${CURDIR}/runbfB.sh ${BFBIN} ${BFCFGB}" EXEC:"${CURDIR}/runbfA.sh ${BFBIN} ${BFCFGA}"
|
||||||
sleep 2
|
sleep 2
|
||||||
;;
|
;;
|
||||||
"IFC")
|
"IFC")
|
||||||
${CURDIR}/runbfC.sh ${BFBIN} ${BFCFGA} &
|
${CURDIR}/runbfC.sh ${BFBIN} ${BFCFGA} &
|
||||||
socat -ly -Wlock TCP4-LISTEN:59999 EXEC:"${CURDIR}/runbfD.sh ${BFBIN} ${BFCFGB}"
|
socat -ly -Wlock TCP4-LISTEN:59999,accept-timeout=3 EXEC:"${CURDIR}/runbfD.sh ${BFBIN} ${BFCFGB}"
|
||||||
sleep 2
|
sleep 2
|
||||||
;;
|
;;
|
||||||
"BKP")
|
"BKP")
|
||||||
${CURDIR}/runbfE.sh ${BFBIN} ${BFCFGA} &
|
${CURDIR}/runbfE.sh ${BFBIN} ${BFCFGA} &
|
||||||
socat -ly -Wlock TCP4-LISTEN:59999 EXEC:"${CURDIR}/runbfF.sh ${BFBIN} ${BFCFGB}"
|
socat -ly -Wlock TCP4-LISTEN:59999,accept-timeout=3 EXEC:"${CURDIR}/runbfF.sh ${BFBIN} ${BFCFGB}"
|
||||||
sleep 2
|
sleep 2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
Loading…
x
Reference in New Issue
Block a user