From: Henrik Nordstrom Date: Tue, 3 Feb 2009 21:35:04 +0000 (+0100) Subject: Need to kick all deferred reads when a delaypool is updated, otherwise X-Git-Tag: SQUID_3_2_0_1~1219 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27b244629b4e7978c3899777c19bb792f32c4bea;p=thirdparty%2Fsquid.git Need to kick all deferred reads when a delaypool is updated, otherwise things queue up too long. The chaos SHOULD be addressed by randomizing the order... (not yet done. XXX comment addded in comm.cc) --- diff --git a/src/DelayPool.cc b/src/DelayPool.cc index 5ee1630128..45b3096bec 100644 --- a/src/DelayPool.cc +++ b/src/DelayPool.cc @@ -114,12 +114,7 @@ CompositePoolNode::delayRead(DeferredRead const &aRead) void CompositePoolNode::kickReads() { - /** - * we only start one, because delay pools may have **many** attached connections, - * and kicking them all off would be chaotic. - * This may need to be reviewed. - */ - deferredReads.kickReads(1); + deferredReads.kickReads(-1); } #endif diff --git a/src/comm.cc b/src/comm.cc index 23147723a9..10e9ee70a4 100644 --- a/src/comm.cc +++ b/src/comm.cc @@ -2553,6 +2553,7 @@ DeferredReadManager::flushReads() { reads = deferredReads; deferredReads = CbDataListContainer(); + // XXX: For fairness this SHOULD randomize the order while (!reads.empty()) { DeferredRead aRead = popHead(reads); kickARead(aRead);