diff --git a/ChangeLog b/ChangeLog index 39b658f8..218d428a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-08-27 Tatsuhiro Tsujikawa + + 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 + 2010-08-27 Tatsuhiro Tsujikawa Removed unused debug log. 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& 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 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 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 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 dhtCommands; DHTSetup().setup(dhtCommands, e, AF_INET6); e->addCommand(dhtCommands);