--- pan-0.115/tasks/queue.cc	2006-10-02 10:49:05.000000000 -0500
+++ pan/tasks/queue.cc	2006-10-02 12:03:05.000000000 -0500
@@ -223,16 +223,22 @@
   }
   else // _work == NEED_NNTP
   {
-//std::cerr << LINE_ID << " need nntp " << std::endl;
-    //debug ("need nntp");
-    const Task::State::unique_servers_t& servers (state._servers);
-    foreach_const (Task::State::unique_servers_t, servers, it)
-      get_pool(*it).request_nntp ();
-    Quark server;
-    if (find_best_server (servers, server)) {
+    for (;;) // feed it as many connections as it wants and we've got
+    {
+      // make the requests...
+      const Task::State::unique_servers_t& servers (state._servers);
+      foreach_const (Task::State::unique_servers_t, servers, it)
+        get_pool(*it).request_nntp ();
+
+      Quark server;
+      if (!find_best_server (servers, server))
+        break;
+
       NNTP * nntp (get_pool(server).check_out ());
-      if (nntp)
-        give_task_a_connection (task, nntp);
+      if (!nntp)
+        break;
+
+      give_task_a_connection (task, nntp);
     }
   }
 }
