diff options
Diffstat (limited to 'src/DefaultBtInteractive.cc')
| -rw-r--r-- | src/DefaultBtInteractive.cc | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/DefaultBtInteractive.cc b/src/DefaultBtInteractive.cc index ecbc1cb6..51309b2d 100644 --- a/src/DefaultBtInteractive.cc +++ b/src/DefaultBtInteractive.cc @@ -361,9 +361,24 @@ void DefaultBtInteractive::detectMessageFlooding() { void DefaultBtInteractive::checkActiveInteraction() { - int32_t interval = 5*60; - if(inactiveCheckPoint.elapsed(interval)) { - throw new DlAbortEx(EX_DROP_INACTIVE_CONNECTION, interval); + // To allow aria2 to accept mutially interested peer, disconnect unintersted + // peer. + { + time_t interval = 30; + if(!peer->amInterested() && !peer->peerInterested() && + inactiveCheckPoint.elapsed(interval)) { + // TODO change the message + throw new DlAbortEx("Disconnect peer because we are not interested each other after %u second(s).", interval); + } + } + // Since the peers which are *just* connected and do nothing to improve + // mutual download progress are completely waste of resources, those peers + // are disconnected in a certain time period. + { + time_t interval = 2*60; + if(inactiveCheckPoint.elapsed(interval)) { + throw new DlAbortEx(EX_DROP_INACTIVE_CONNECTION, interval); + } } } |
