- tv.tv_sec = timeout;
- tv.tv_usec = 0;
- FD_ZERO(&readset);
- FD_SET(server_socket, &readset);
- nfound = select(server_socket+1,
- (SELECT_ARG_TYPE *)&readset,
- NULL,
- NULL,
- &tv);
- if(nfound <= 0 || !FD_ISSET(server_socket, &readset)) {
- save_errno = errno;
- if(nfound < 0) {
- dbprintf(("%s: stream_accept: select() failed: %s\n",
- debug_prefix_time(NULL),
- strerror(save_errno)));
- } else if(nfound == 0) {
- dbprintf(("%s: stream_accept: timeout after %d second%s\n",
- debug_prefix_time(NULL),
- timeout,
- (timeout == 1) ? "" : "s"));
- save_errno = ENOENT; /* ??? */
- } else if (!FD_ISSET(server_socket, &readset)) {
- int i;
-
- for(i = 0; i < server_socket + 1; i++) {
- if(FD_ISSET(i, &readset)) {
- dbprintf(("%s: stream_accept: got fd %d instead of %d\n",
- debug_prefix_time(NULL),
- i,
- server_socket));
- }
- }
- save_errno = EBADF;
- }
- errno = save_errno;
- return -1;
- }