| 1234567891011121314151617181920212223242526272829303132 |
- #include "icmpd.h"
- int
- readable_listen(void)
- {
- int i, connfd;
- socklen_t clilen;
- clilen = sizeof(cliaddr);
- connfd = Accept(listenfd, (SA *)&cliaddr, &clilen);
- /* 4find first available client[] structure */
- for (i = 0; i < FD_SETSIZE; i++)
- if (client[i].connfd < 0) {
- client[i].connfd = connfd; /* save descriptor */
- break;
- }
- if (i == FD_SETSIZE) {
- close(connfd); /* can't handle new client, */
- return(--nready); /* rudely close the new connection */
- }
- printf("new connection, i = %d, connfd = %d\n", i, connfd);
- FD_SET(connfd, &allset); /* add new descriptor to set */
- if (connfd > maxfd)
- maxfd = connfd; /* for select() */
- if (i > maxi)
- maxi = i; /* max index in client[] array */
- return(--nready);
- }
|