Based on similar work done by OpenBSD for sshd,

I came up with this:
The idea is to prevent spinning when out of file descriptors by
backing off for a while.

Suggestions ?


diff -r 63f8d6c469cf svr-main.c
--- a/svr-main.c        Thu May 17 00:26:12 2012 +0800
+++ b/svr-main.c        Sat Dec 08 03:48:40 2012 +0400
@@ -226,9 +226,10 @@
                        remoteaddrlen = sizeof(remoteaddr);
                        childsock = accept(listensocks[i],
                                        (struct sockaddr*)&remoteaddr, 
&remoteaddrlen);
-
                        if (childsock < 0) {
                                /* accept failed */
+                               if(errno == EMFILE || errno == ENFILE)
+                                       usleep(100*1000);
                                continue;
                        }

-- 
Brightest day,
Blackest night,
No bug shall escape my sight,
And those who worship evil's mind,
be wary of my powers,
puffy lantern's light !

Reply via email to