瀏覽代碼

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
Tatsuhiro Tsujikawa 15 年之前
父節點
當前提交
b9522dea25
共有 4 個文件被更改,包括 20 次插入6 次删除
  1. 8 0
      ChangeLog
  2. 2 1
      src/BtSetup.cc
  3. 2 1
      src/DownloadEngineFactory.cc
  4. 8 4
      src/RequestGroup.cc

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+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
+
 2010-08-27  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed unused debug log.

+ 2 - 1
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;

+ 2 - 1
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))){

+ 8 - 4
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);