=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/sm1Socket.c,v retrieving revision 1.14 retrieving revision 1.17 diff -u -p -r1.14 -r1.17 --- OpenXM/src/kan96xx/plugin/sm1Socket.c 2002/10/30 13:23:06 1.14 +++ OpenXM/src/kan96xx/plugin/sm1Socket.c 2004/02/25 23:14:35 1.17 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/plugin/sm1Socket.c,v 1.13 2002/10/24 02:12:35 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/plugin/sm1Socket.c,v 1.16 2004/02/23 09:03:43 takayama Exp $ */ /* msg0s.c */ #include #include @@ -6,6 +6,7 @@ #include #include #include +#include #include "datatype.h" @@ -30,7 +31,6 @@ struct object KsocketOpen(struct object obj) { int s_waiting; int on; int tt; - extern int errno; extern int Post_debug; if ((char *)getenv("OXWEB_DEBUG") != NULL) { @@ -179,7 +179,11 @@ struct object KsocketAccept(struct object obj) { } s = KopInteger(obj1); if ((news = accept(s,NULL,NULL)) < 0) { - errorMsg1s("Error in accept."); + fprintf(stderr,"Error in accept. Retrying (KsocketAccept).\n"); + /* Code added for strange behavior on cygwin. */ + if ((news = accept(s,NULL,NULL)) < 0) { + errorMsg1s("Error in accept. Retry failed."); + } } if (close(s) < 0) { errorMsg1s("Error in closing the old socket."); @@ -215,7 +219,11 @@ struct object KsocketAccept2(struct object obj) { } s = KopInteger(obj1); if ((news = accept(s,NULL,NULL)) < 0) { - errorMsg1s("Error in accept."); + fprintf(stderr,"Error in accept. Retrying (KsocketAccept2).\n"); + /* Code added for strange behavior on cygwin. */ + if ((news = accept(s,NULL,NULL)) < 0) { + errorMsg1s("Error in accept. Retry failed."); + } } if (close(s) < 0) { errorMsg1s("Error in closing the old socket."); @@ -228,7 +236,6 @@ struct object KsocketAccept2(struct object obj) { int KsocketSelect0(int fd,int t) { fd_set readfds; struct timeval timeout; - extern int errno; FD_ZERO(&readfds); FD_SET(fd,&readfds); timeout.tv_sec = 0; @@ -294,7 +301,6 @@ struct object KsocketSelectMulti(struct object obj) int size,i,fd,p,t; fd_set readfds; struct timeval timeout; - extern errno; if (obj.tag != Sarray) { errorMsg1s("KsocketSelectMulti([[sid1, sid2,...] optional integer timeout default 0]"); } @@ -405,8 +411,8 @@ struct object KsocketRead(struct object obj) { errorMsg1s("Select returns 1, but there is no data to read."); } }else { /* increase the datasize */ - tmp = (char *)GC_malloc(sizeof(char)*2*datasize); - /*I should use GC_malloc_atomic and free after finishing this function?*/ + tmp = (char *)sGC_malloc(sizeof(char)*2*datasize); + /*I should use sGC_malloc_atomic and free after finishing this function?*/ if (tmp == (char *)NULL) errorMsg1s("Out of Memory."); bcopy(data,tmp,totalsize); data = tmp; @@ -414,7 +420,7 @@ struct object KsocketRead(struct object obj) { } } - r = (char *)GC_malloc(sizeof(char)*(totalsize+1)); + r = (char *)sGC_malloc(sizeof(char)*(totalsize+1)); if (r == (char *)NULL) errorMsg1s("Out of Memory."); bcopy(data,r,totalsize); r[totalsize] = 0; @@ -676,7 +682,7 @@ struct object KsocketReadHTTP(struct object socketObj) } } if (datasize-1 <= strlen(sss)+strlen(s)) { - tmp = (char *)GC_malloc(sizeof(char)*2*(datasize+strlen(s))+1); + tmp = (char *)sGC_malloc(sizeof(char)*2*(datasize+strlen(s))+1); if (tmp == (char *)NULL) errorMsg1s("Out of Memory."); strcpy(tmp,sss); strcat(tmp,s); @@ -780,7 +786,7 @@ struct object KsocketGetHostName(void) { if (gethostname(name,1023) != 0) { return rob; } - s = (char *)GC_malloc(sizeof(char)*(strlen(name)+2)); + s = (char *)sGC_malloc(sizeof(char)*(strlen(name)+2)); if (s == (char *)NULL) errorMsg1s("Out of Memory."); strcpy(s,name); return(KpoString(s));