- /* start as many probes as we can */
- num_probes_change = GNUNET_MIN (num_probes_waiting,
- h->max_parallel_requests - (h->active_downloads + num_downloads_waiting));
- }
-
+ /* also start probes if there is room, but use a lower cap of (mpd/4) + 1 */
+ if (1 + h->max_parallel_downloads / 4 >= (h->active_downloads + num_downloads_change))
+ num_probes_change = GNUNET_MIN (num_probes_waiting,
+ (1 + h->max_parallel_downloads / 4) - (h->active_downloads + num_downloads_change));
+ else
+ num_probes_change = 0;
+ }
+ GNUNET_break (num_downloads_change <= num_downloads_waiting);