]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Need to kick all deferred reads when a delaypool is updated, otherwise
authorHenrik Nordstrom <henrik@henriknordstrom.net>
Tue, 3 Feb 2009 21:35:04 +0000 (22:35 +0100)
committerHenrik Nordstrom <henrik@henriknordstrom.net>
Tue, 3 Feb 2009 21:35:04 +0000 (22:35 +0100)
things queue up too long.

The chaos SHOULD be addressed by randomizing the order...
(not yet done. XXX comment addded in comm.cc)

src/DelayPool.cc
src/comm.cc

index 5ee1630128a43d7ba855348bd9d9d24514f1fb70..45b3096bec6a4f889a12071a241ded5572a57468 100644 (file)
@@ -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
index 23147723a92f45f7c7e077533e95b410c17585db..10e9ee70a44fd37f7571585e0b1988e84be47ba3 100644 (file)
@@ -2553,6 +2553,7 @@ DeferredReadManager::flushReads() {
     reads = deferredReads;
     deferredReads = CbDataListContainer<DeferredRead>();
 
+    // XXX: For fairness this SHOULD randomize the order
     while (!reads.empty()) {
         DeferredRead aRead = popHead(reads);
         kickARead(aRead);