summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-27 11:48:09 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-27 11:48:09 +0000
commitb9522dea251724625b2dc6fffc20a5b4f7013c70 (patch)
tree4078d70d325ff728651bfe07fe72af298e290f4b /src
parent5bcc0ba60a70251b2901240be3cec4e352696783 (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.cc3
-rw-r--r--src/DownloadEngineFactory.cc3
-rw-r--r--src/RequestGroup.cc12
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);