readable_listen.lc 1.6 KB

123456789101112131415161718192021222324252627282930
  1. #include "icmpd.h"## 1 ##src/icmpd/readable_listen.c##
  2. int## 2 ##src/icmpd/readable_listen.c##
  3. readable_listen(void)## 3 ##src/icmpd/readable_listen.c##
  4. {## 4 ##src/icmpd/readable_listen.c##
  5. int i, connfd;## 5 ##src/icmpd/readable_listen.c##
  6. socklen_t clilen;## 6 ##src/icmpd/readable_listen.c##
  7. clilen = addrlen;## 7 ##src/icmpd/readable_listen.c##
  8. connfd = Accept(listenfd, cliaddr, &clilen);## 8 ##src/icmpd/readable_listen.c##
  9. /* 4find first available client[] structure */## 9 ##src/icmpd/readable_listen.c##
  10. for (i = 0; i < FD_SETSIZE; i++)## 10 ##src/icmpd/readable_listen.c##
  11. if (client[i].connfd < 0) {## 11 ##src/icmpd/readable_listen.c##
  12. client[i].connfd = connfd; /* save descriptor */## 12 ##src/icmpd/readable_listen.c##
  13. break;## 13 ##src/icmpd/readable_listen.c##
  14. }## 14 ##src/icmpd/readable_listen.c##
  15. if (i == FD_SETSIZE)## 15 ##src/icmpd/readable_listen.c##
  16. err_quit("too many clients");## 16 ##src/icmpd/readable_listen.c##
  17. printf("new connection, i = %d, connfd = %d\n", i, connfd);## 17 ##src/icmpd/readable_listen.c##
  18. FD_SET(connfd, &allset); /* add new descriptor to set */## 18 ##src/icmpd/readable_listen.c##
  19. if (connfd > maxfd)## 19 ##src/icmpd/readable_listen.c##
  20. maxfd = connfd; /* for select() */## 20 ##src/icmpd/readable_listen.c##
  21. if (i > maxi)## 21 ##src/icmpd/readable_listen.c##
  22. maxi = i; /* max index in client[] array */## 22 ##src/icmpd/readable_listen.c##
  23. return (--nready);## 23 ##src/icmpd/readable_listen.c##
  24. }## 24 ##src/icmpd/readable_listen.c##