diff options
author | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-03-24 18:24:42 +0800 |
---|---|---|
committer | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-03-24 18:24:42 +0800 |
commit | 9c4346e8ebea6e1e8086e30760f0d034862de151 (patch) | |
tree | f5ffcf8488297fa2dc980a9b31c3df02f610d005 /cacheserver | |
parent | d552f049050a69f6fbb9593489797e941059a97a (diff) | |
download | pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar.gz pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar.bz2 pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar.lz pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar.xz pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.tar.zst pttbbs-9c4346e8ebea6e1e8086e30760f0d034862de151.zip |
* 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
Diffstat (limited to 'cacheserver')
-rw-r--r-- | cacheserver/utmpserver3.c | 9 |
1 files changed, 4 insertions, 5 deletions
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[]) |