diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-27 11:48:09 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-27 11:48:09 +0000 |
| commit | b9522dea251724625b2dc6fffc20a5b4f7013c70 (patch) | |
| tree | 4078d70d325ff728651bfe07fe72af298e290f4b /src | |
| parent | 5bcc0ba60a70251b2901240be3cec4e352696783 (diff) | |
2010-08-27 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Don't listen on IPv6 socket for BitTorrent, DHT, XML-RPC if
--disable-ipv6 is true.
* src/BtSetup.cc
* src/DownloadEngineFactory.cc
* src/RequestGroup.cc
Diffstat (limited to 'src')
| -rw-r--r-- | src/BtSetup.cc | 3 | ||||
| -rw-r--r-- | src/DownloadEngineFactory.cc | 3 | ||||
| -rw-r--r-- | src/RequestGroup.cc | 12 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/BtSetup.cc b/src/BtSetup.cc index 0f4c25fd..0a6ffc17 100644 --- a/src/BtSetup.cc +++ b/src/BtSetup.cc @@ -185,7 +185,8 @@ void BtSetup::setup(std::vector<Command*>& commands, } if(PeerListenCommand::getNumInstance() == 0) { static int families[] = { AF_INET, AF_INET6 }; - for(size_t i = 0; i < A2_ARRAY_LEN(families); ++i) { + size_t familiesLength = e->getOption()->getAsBool(PREF_DISABLE_IPV6)?1:2; + for(size_t i = 0; i < familiesLength; ++i) { PeerListenCommand* listenCommand = PeerListenCommand::getInstance(e, families[i]); bool ret; diff --git a/src/DownloadEngineFactory.cc b/src/DownloadEngineFactory.cc index 67ba8116..0f4b0d18 100644 --- a/src/DownloadEngineFactory.cc +++ b/src/DownloadEngineFactory.cc @@ -171,7 +171,8 @@ DownloadEngineFactory::newDownloadEngine #ifdef ENABLE_XML_RPC if(op->getAsBool(PREF_ENABLE_XML_RPC)) { static int families[] = { AF_INET, AF_INET6 }; - for(size_t i = 0; i < A2_ARRAY_LEN(families); ++i) { + size_t familiesLength = op->getAsBool(PREF_DISABLE_IPV6)?1:2; + for(size_t i = 0; i < familiesLength; ++i) { HttpListenCommand* httpListenCommand = new HttpListenCommand(e->newCUID(), e.get(), families[i]); if(httpListenCommand->bindPort(op->getAsInt(PREF_XML_RPC_LISTEN_PORT))){ diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index c5606e16..1e79bda6 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -293,13 +293,15 @@ void RequestGroup::createInitialCommand (progressInfoFile)))); if(metadataGetMode) { if(option_->getAsBool(PREF_ENABLE_DHT) || - option_->getAsBool(PREF_ENABLE_DHT6)) { + (!e->getOption()->getAsBool(PREF_DISABLE_IPV6) && + option_->getAsBool(PREF_ENABLE_DHT6))) { if(option_->getAsBool(PREF_ENABLE_DHT)) { std::vector<Command*> dhtCommands; DHTSetup().setup(dhtCommands, e, AF_INET); e->addCommand(dhtCommands); } - if(option_->getAsBool(PREF_ENABLE_DHT6)) { + if(!e->getOption()->getAsBool(PREF_DISABLE_IPV6) && + option_->getAsBool(PREF_ENABLE_DHT6)) { std::vector<Command*> dhtCommands; DHTSetup().setup(dhtCommands, e, AF_INET6); e->addCommand(dhtCommands); @@ -362,13 +364,15 @@ void RequestGroup::createInitialCommand if(!torrentAttrs->privateTorrent && (option_->getAsBool(PREF_ENABLE_DHT) || - option_->getAsBool(PREF_ENABLE_DHT6))) { + (!e->getOption()->getAsBool(PREF_DISABLE_IPV6) && + option_->getAsBool(PREF_ENABLE_DHT6)))) { if(option_->getAsBool(PREF_ENABLE_DHT)) { std::vector<Command*> dhtCommands; DHTSetup().setup(dhtCommands, e, AF_INET); e->addCommand(dhtCommands); } - if(option_->getAsBool(PREF_ENABLE_DHT6)) { + if(!e->getOption()->getAsBool(PREF_DISABLE_IPV6) && + option_->getAsBool(PREF_ENABLE_DHT6)) { std::vector<Command*> dhtCommands; DHTSetup().setup(dhtCommands, e, AF_INET6); e->addCommand(dhtCommands); |
