mirror of https://github.com/aria2/aria2
Take into account PREF_MAX_CONNECTION_PER_SERVER in
findFasterRequest(...,serverStatMan).pull/1/head
parent
2906484345
commit
5d498cb1ab
|
@ -234,6 +234,9 @@ FileEntry::findFasterRequest
|
||||||
if(lastFasterReplace_.difference(global::wallclock) < startupIdleTime) {
|
if(lastFasterReplace_.difference(global::wallclock) < startupIdleTime) {
|
||||||
return SharedHandle<Request>();
|
return SharedHandle<Request>();
|
||||||
}
|
}
|
||||||
|
std::vector<std::string> inFlightHosts;
|
||||||
|
enumerateInFlightHosts(inFlightRequests_.begin(), inFlightRequests_.end(),
|
||||||
|
std::back_inserter(inFlightHosts));
|
||||||
const SharedHandle<PeerStat>& basestat = base->getPeerStat();
|
const SharedHandle<PeerStat>& basestat = base->getPeerStat();
|
||||||
A2_LOG_DEBUG("Search faster server using ServerStat.");
|
A2_LOG_DEBUG("Search faster server using ServerStat.");
|
||||||
// Use first 10 good URIs to introduce some randomness.
|
// Use first 10 good URIs to introduce some randomness.
|
||||||
|
@ -246,6 +249,13 @@ FileEntry::findFasterRequest
|
||||||
if(!uri::parse(us, *i)) {
|
if(!uri::parse(us, *i)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(std::count(inFlightHosts.begin(), inFlightHosts.end(),us.host)
|
||||||
|
>= static_cast<int>(maxConnectionPerServer_)) {
|
||||||
|
A2_LOG_DEBUG(fmt("%s has already used %d times, not considered.",
|
||||||
|
(*i).c_str(),
|
||||||
|
static_cast<int>(maxConnectionPerServer_)));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if(findSecond(usedHosts.begin(), usedHosts.end(), us.host) !=
|
if(findSecond(usedHosts.begin(), usedHosts.end(), us.host) !=
|
||||||
usedHosts.end()) {
|
usedHosts.end()) {
|
||||||
A2_LOG_DEBUG(fmt("%s is in usedHosts, not considered", (*i).c_str()));
|
A2_LOG_DEBUG(fmt("%s is in usedHosts, not considered", (*i).c_str()));
|
||||||
|
|
Loading…
Reference in New Issue