Be more aggressive in connecting to peers with relevant services.

Only allow skipping relevant services until there are four outbound
 connections up.

This avoids quickly filling up with peers lacking the relevant
 services when addrman has few or none of them.

Github-Pull: #8949
Rebased-From: 9583477288
This commit is contained in:
Gregory Maxwell 2016-10-17 23:08:52 +00:00 committed by Wladimir J. van der Laan
parent 2c0913d0b3
commit 33cd5539b2
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
1 changed files with 2 additions and 2 deletions

View File

@ -1707,8 +1707,8 @@ void ThreadOpenConnections()
if (nANow - addr.nLastTry < 600 && nTries < 30)
continue;
// only consider nodes missing relevant services after 40 failed attempts
if ((addr.nServices & nRelevantServices) != nRelevantServices && nTries < 40)
// only consider nodes missing relevant services after 40 failed attempts and only if less than half the outbound are up.
if ((addr.nServices & nRelevantServices) != nRelevantServices && (nTries < 40 || nOutbound >= (nMaxOutbound >> 1)))
continue;
// do not allow non-default ports, unless after 50 invalid addresses selected already