=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/mytcpio.c,v retrieving revision 1.3 retrieving revision 1.8 diff -u -p -r1.3 -r1.8 --- OpenXM/src/kan96xx/plugin/mytcpio.c 2000/03/20 01:53:47 1.3 +++ OpenXM/src/kan96xx/plugin/mytcpio.c 2002/10/20 08:26:00 1.8 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.2 1999/10/30 02:22:16 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/plugin/mytcpio.c,v 1.7 2002/10/20 07:58:18 takayama Exp $ */ #include #include #include @@ -15,10 +15,15 @@ #if defined(sun) int MyEnv_oxmisc[2000]; #else +#if defined(__CYGWIN__) +sigjmp_buf MyEnv_oxmisc; /* may cause a trouble in Solaris. */ +#else jmp_buf MyEnv_oxmisc; /* may cause a trouble in Solaris. */ #endif +#endif #define READBUFSIZE 10000 +#define MAX_LISTEN_QUEUE 3 static void errorMsg1s(char *s) { fprintf(stderr,"%s\n",s); } @@ -38,7 +43,7 @@ socketOpen(char *serverName,int portNumber) { SET_TCPIOERROR; fprintf(TcpioError,"Hello from open. serverName is %s and portnumber is %d\n", - serverName,portNumber); + serverName,portNumber); if ((myhost = gethostbyname(serverName)) == NULL) { errorMsg1s("Bad server name."); return(-1); @@ -47,7 +52,7 @@ socketOpen(char *serverName,int portNumber) { me.sin_family = AF_INET; me.sin_port = htons(portNumber); bcopy(myhost->h_addr, - &me.sin_addr,myhost->h_length); + &me.sin_addr,myhost->h_length); if ((s_waiting = socket(AF_INET,SOCK_STREAM,0)) < 0) { errorMsg1s("Socket allocation is failed."); @@ -69,7 +74,7 @@ socketOpen(char *serverName,int portNumber) { return(-1); } - if (listen(s_waiting,1) < 0) { + if (listen(s_waiting,MAX_LISTEN_QUEUE) < 0) { errorMsg1s("Listen failed"); return(-1); } @@ -121,9 +126,9 @@ socketAcceptLocal(int snum) { printf("\n"); if (peer.sa_data[2] == 0x7f && peer.sa_data[3] == 0 && peer.sa_data[4] == 0 && peer.sa_data[5] == 1) { - fprintf(stderr,"Authentification: localhost is allowed to be accepted.\n"); + fprintf(stderr,"Authentication: localhost is allowed to be accepted.\n"); }else{ - errorMsg1s("Authentification: The connection is not from the localhost."); + errorMsg1s("Authentication: The connection is not from the localhost."); close(s); fprintf(stderr,"The connection is refused."); return(-1); @@ -137,6 +142,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; ih_addr, - (char *)&server.sin_addr,servhost->h_length); + (char *)&server.sin_addr,servhost->h_length); if ((socketid = socket(AF_INET,SOCK_STREAM,0)) <0) { errorMsg1s("socket allocation is failed.\n");