From e80b19c63dc806bf0f46b8d7f64d5f5ce3561173 Mon Sep 17 00:00:00 2001 From: Zachery Hostens Date: Mon, 5 Nov 2007 03:14:47 -0600 Subject: [PATCH] allow on_newclient to accept as many clients as possible --- cnet.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/cnet.c b/cnet.c index 2eb708b..707a116 100644 --- a/cnet.c +++ b/cnet.c @@ -177,17 +177,19 @@ static int cnet_on_newclient (int sid, cnet_socket_t *sock) salen = sizeof(sa); memset (&sa, '\0', salen); - fd = accept (sock->fd, &sa, &salen); - if (0 > fd) return -1; - newsid = cnet_new (); - newsock = &socks[newsid]; - newsock->fd = fd; - newsock->flags = CNET_CLIENT; - cnet_register (newsid, newsock, POLLIN|POLLERR|POLLHUP|POLLNVAL); - - getnameinfo (&sa, salen, host, 40, serv, 6, NI_NUMERICHOST|NI_NUMERICSERV); - newsock->rhost = strdup (host); - newsock->rport = atoi (serv); + while (navailsocks) { + fd = accept (sock->fd, &sa, &salen); + if (0 > fd) break; + newsid = cnet_new (); + newsock = &socks[newsid]; + newsock->fd = fd; + newsock->flags = CNET_CLIENT; + cnet_register (newsid, newsock, POLLIN|POLLERR|POLLHUP|POLLNVAL); + + getnameinfo (&sa, salen, host, 40, serv, 6, NI_NUMERICHOST|NI_NUMERICSERV); + newsock->rhost = strdup (host); + newsock->rport = atoi (serv); + } return sock->handler->on_newclient (sid, sock->data, newsid, newsock->rhost, newsock->rport); } -- 2.11.4.GIT