From 9c4346e8ebea6e1e8086e30760f0d034862de151 Mon Sep 17 00:00:00 2001 From: kcwu Date: Sat, 24 Mar 2007 10:24:42 +0000 Subject: * fix bug: utmpserver3 will add 'accept' event more than once into queue on heavy load, then used up cpu resources. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3493 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- cacheserver/utmpserver3.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'cacheserver/utmpserver3.c') diff --git a/cacheserver/utmpserver3.c b/cacheserver/utmpserver3.c index 50dcfb57..e6bcb621 100644 --- a/cacheserver/utmpserver3.c +++ b/cacheserver/utmpserver3.c @@ -286,11 +286,6 @@ void connection_accept(int fd, short event, void *arg) socklen_t len = sizeof(clientaddr); int cfd; - if (clients > MAX_CLIENTS) { - event_del(&ev); - return; - } - if ((cfd = accept(fd, (struct sockaddr *)&clientaddr, &len)) < 0 ) return; @@ -301,6 +296,10 @@ void connection_accept(int fd, short event, void *arg) event_set(&cs->ev, cfd, EV_READ, (void *) connection_client, cs); event_add(&cs->ev, &tv); clients++; + + if (clients >= MAX_CLIENTS) { + event_del(&ev); + } } int main(int argc, char *argv[]) -- cgit v1.2.3