]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/comm/AcceptLimiter.cc
2 #include "comm/AcceptLimiter.h"
3 #include "comm/ConnAcceptor.h"
4 #include "comm/Connection.h"
7 Comm::AcceptLimiter
Comm::AcceptLimiter::Instance_
;
9 Comm::AcceptLimiter
&Comm::AcceptLimiter::Instance()
15 Comm::AcceptLimiter::defer(Comm::ConnAcceptor
*afd
)
18 debugs(5, 5, HERE
<< afd
->conn
<< " x" << afd
->isLimited
);
19 deferred
.push_back(afd
);
23 Comm::AcceptLimiter::removeDead(Comm::ConnAcceptor
*afd
)
25 for (unsigned int i
= 0; i
< deferred
.size() && afd
->isLimited
> 0; i
++) {
26 if (deferred
[i
] == afd
) {
29 debugs(5, 5, HERE
<< afd
->conn
<< " x" << afd
->isLimited
);
35 Comm::AcceptLimiter::kick()
37 debugs(5, 5, HERE
<< " size=" << deferred
.size());
38 while (deferred
.size() > 0 && fdNFree() >= RESERVED_FD
) {
39 /* NP: shift() is equivalent to pop_front(). Giving us a FIFO queue. */
40 ConnAcceptor
*temp
= deferred
.shift();
42 debugs(5, 5, HERE
<< " doing one.");