int skt_recvN(SOCKET hSocket,void *buff,int nBytes) { int nLeft,nRead; char *pBuff=(char *)buff; nLeft = nBytes; while (0 < nLeft) { if (0==skt_select1(hSocket,60*1000)) return skt_abort(93610,"Timeout on socket recv!"); skt_ignore_SIGPIPE=1; nRead = recv(hSocket,pBuff,nLeft,0); skt_ignore_SIGPIPE=0; if (nRead<=0) { if (nRead==0) return skt_abort(93620,"Socket closed before recv."); if (skt_should_retry()) continue;/*Try again*/ else return skt_abort(93650+hSocket,"Error on socket recv!"); } else { nLeft -= nRead; pBuff += nRead; } } return 0; }
/*Check for ready Ccs messages:*/ void CcsServerCheck(void) { while (1==skt_select1(CcsServer_fd(),0)) { CcsImplHeader hdr; void *data; /* printf("Got CCS connect...\n"); */ if (CcsServer_recvRequest(&hdr,&data)) {/*We got a network request*/ /* printf("Got CCS request...\n"); */ if (! check_stdio_header(&hdr)) { CcsImpl_netRequest(&hdr,data); } free(data); } } }