=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/mytcpio.c,v retrieving revision 1.7 retrieving revision 1.10 diff -u -p -r1.7 -r1.10 --- OpenXM/src/kan96xx/plugin/mytcpio.c 2002/10/20 07:58:18 1.7 +++ OpenXM/src/kan96xx/plugin/mytcpio.c 2003/07/20 07:18:45 1.10 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.6 2002/02/24 10:27:20 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.9 2002/10/23 08:42:22 takayama Exp $ */ #include #include #include @@ -113,8 +113,20 @@ 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. */ + int i; + for (i=0; i<5; i++) { + if ((news = accept(s,&peer,&len)) < 0) { + fprintf(stderr,"%d : ",i); + errorMsg1s("Error in accept. Retrying"); + } + } + if (news < 0) { + errorMsg1s("Error in accept. Retrying"); + return(-1); + } + } } len = sizeof(struct sockaddr); @@ -142,6 +154,42 @@ socketAcceptLocal(int snum) { return(news); } +/* It does not close the socket for listening. */ +socketAcceptLocal2(int snum) { + int s, news; + struct sockaddr peer; + int len; + int i; + + SET_TCPIOERROR; + s = 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); + } + + len = sizeof(struct sockaddr); + getpeername(news,&peer,&len); + printf("len= %d\n",len); + for (i=0; i= 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) {