forked from unpbook/unpv13e
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadable_listen.lc
29 lines (24 loc) · 1.61 KB
/
readable_listen.lc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "icmpd.h"## 1 ##src/icmpd/readable_listen.c##
int## 2 ##src/icmpd/readable_listen.c##
readable_listen(void)## 3 ##src/icmpd/readable_listen.c##
{## 4 ##src/icmpd/readable_listen.c##
int i, connfd;## 5 ##src/icmpd/readable_listen.c##
socklen_t clilen;## 6 ##src/icmpd/readable_listen.c##
clilen = addrlen;## 7 ##src/icmpd/readable_listen.c##
connfd = Accept(listenfd, cliaddr, &clilen);## 8 ##src/icmpd/readable_listen.c##
/* 4find first available client[] structure */## 9 ##src/icmpd/readable_listen.c##
for (i = 0; i < FD_SETSIZE; i++)## 10 ##src/icmpd/readable_listen.c##
if (client[i].connfd < 0) {## 11 ##src/icmpd/readable_listen.c##
client[i].connfd = connfd; /* save descriptor */## 12 ##src/icmpd/readable_listen.c##
break;## 13 ##src/icmpd/readable_listen.c##
}## 14 ##src/icmpd/readable_listen.c##
if (i == FD_SETSIZE)## 15 ##src/icmpd/readable_listen.c##
err_quit("too many clients");## 16 ##src/icmpd/readable_listen.c##
printf("new connection, i = %d, connfd = %d\n", i, connfd);## 17 ##src/icmpd/readable_listen.c##
FD_SET(connfd, &allset); /* add new descriptor to set */## 18 ##src/icmpd/readable_listen.c##
if (connfd > maxfd)## 19 ##src/icmpd/readable_listen.c##
maxfd = connfd; /* for select() */## 20 ##src/icmpd/readable_listen.c##
if (i > maxi)## 21 ##src/icmpd/readable_listen.c##
maxi = i; /* max index in client[] array */## 22 ##src/icmpd/readable_listen.c##
return (--nready);## 23 ##src/icmpd/readable_listen.c##
}## 24 ##src/icmpd/readable_listen.c##