=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/mytcpio.c,v retrieving revision 1.8 retrieving revision 1.13 diff -u -p -r1.8 -r1.13 --- OpenXM/src/kan96xx/plugin/mytcpio.c 2002/10/20 08:26:00 1.8 +++ OpenXM/src/kan96xx/plugin/mytcpio.c 2004/02/25 23:14:35 1.13 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.7 2002/10/20 07:58:18 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.12 2003/09/16 02:57:39 takayama Exp $ */ #include #include #include @@ -6,6 +6,7 @@ #include #include #include +#include /* -lnsl -lsocket /usr/ucblib/libucb.a */ #include "ox_kan.h" /* @@ -38,7 +39,6 @@ socketOpen(char *serverName,int portNumber) { static struct sockaddr_in me; static int s_waiting; static int on; - extern int errno; int tt; SET_TCPIOERROR; @@ -91,8 +91,12 @@ socketAccept(int snum) { s = snum; fprintf(TcpioError,"Trying to accept... "); fflush(TcpioError); if ((news = accept(s,NULL,NULL)) < 0) { - errorMsg1s("Error in accept."); - return(-1); + errorMsg1s("Error in accept. Retrying (socketAccept)."); + /* Code added for strange behavior on cygwin. */ + if ((news = accept(s,NULL,NULL)) < 0) { + errorMsg1s("Error in accept. Retry failed."); + return (-1); + } } fprintf(TcpioError,"Accepted.\n"); fflush(TcpioError); if (close(s) < 0) { @@ -113,8 +117,12 @@ socketAcceptLocal(int snum) { fprintf(TcpioError,"Trying to accept from localhost... "); fflush(TcpioError); len = sizeof(struct sockaddr); if ((news = accept(s,&peer,&len)) < 0) { - errorMsg1s("Error in accept."); - return(-1); + errorMsg1s("Error in accept. Retrying"); + /* Code added for strange behavior on cygwin. */ + if ((news = accept(s,&peer,&len)) < 0) { + errorMsg1s("Error in accept. Retry failed."); + return (-1); + } } len = sizeof(struct sockaddr); @@ -154,8 +162,12 @@ socketAcceptLocal2(int snum) { fprintf(TcpioError,"Trying to accept from localhost... "); fflush(TcpioError); len = sizeof(struct sockaddr); if ((news = accept(s,&peer,&len)) < 0) { - errorMsg1s("Error in accept."); - return(-1); + errorMsg1s("Error in accept. Retrying (socketAcceptLocal2)."); + /* Code added for strange behavior on cygwin. */ + if ((news = accept(s,&peer,&len)) < 0) { + errorMsg1s("Error in accept. Retry failed."); + return (-1); + } } len = sizeof(struct sockaddr); @@ -182,7 +194,6 @@ int oxSocketSelect0(int fd,int t) { fd_set readfds; struct timeval timeout; int debug = 0; - extern int errno; SET_TCPIOERROR; FD_ZERO(&readfds); FD_SET(fd,&readfds); @@ -214,7 +225,6 @@ oxSocketMultiSelect(int sid[],int size,int t,int resul fd_set readfds; struct timeval timeout; int isdata = 0; - extern errno; SET_TCPIOERROR; FD_ZERO(&readfds); @@ -299,6 +309,8 @@ socketConnectWithPass(char *servername,int port,char * int m; SET_TCPIOERROR; fd = socketConnect(servername,port); + if ((pass == NULL) && (fd >= 0)) return fd; + if ((pass == NULL) && (fd < 0)) return -1; if (fd >= 0) { m = write(fd,pass,strlen(pass)+1); if (m != strlen(pass)+1) {