ソースを参照

2010-04-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Made aria2 not send
	"application/metalink4+xml,application/metalink+xml" in Accept
	header for web-seeding URIs and tracker request.
	* src/Metalink2RequestGroup.cc
	* src/TrackerWatcherCommand.cc
	* src/download_helper.cc
	* src/util.cc
	* src/util.h
Tatsuhiro Tsujikawa 15 年 前
コミット
5cc28b2d80
6 ファイル変更32 行追加15 行削除
  1. 11 0
      ChangeLog
  2. 2 15
      src/Metalink2RequestGroup.cc
  3. 1 0
      src/TrackerWatcherCommand.cc
  4. 3 0
      src/download_helper.cc
  5. 12 0
      src/util.cc
  6. 3 0
      src/util.h

+ 11 - 0
ChangeLog

@@ -1,3 +1,14 @@
+2010-04-02  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Made aria2 not send
+	"application/metalink4+xml,application/metalink+xml" in Accept
+	header for web-seeding URIs and tracker request.
+	* src/Metalink2RequestGroup.cc
+	* src/TrackerWatcherCommand.cc
+	* src/download_helper.cc
+	* src/util.cc
+	* src/util.h
+
 2010-04-01  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Added download_helper.{cc,h} to SRCS

+ 2 - 15
src/Metalink2RequestGroup.cc

@@ -54,7 +54,6 @@
 #include "FileEntry.h"
 #include "A2STR.h"
 #include "a2functional.h"
-#include "DownloadHandlerConstants.h"
 #ifdef ENABLE_BITTORRENT
 # include "BtDependency.h"
 # include "download_helper.h"
@@ -124,18 +123,6 @@ Metalink2RequestGroup::generate
   createRequestGroup(groups, entries, option);
 }
 
-namespace {
-void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group)
-{
-  for(std::vector<std::string>::const_iterator i =
-	DownloadHandlerConstants::getMetalinkContentTypes().begin(),
-        eoi = DownloadHandlerConstants::getMetalinkContentTypes().end();
-      i != eoi; ++i) {
-    group->removeAcceptType(*i);
-  }
-}
-}
-
 void
 Metalink2RequestGroup::createRequestGroup
 (std::vector<SharedHandle<RequestGroup> >& groups,
@@ -213,7 +200,7 @@ Metalink2RequestGroup::createRequestGroup
         torrentRg->clearPostDownloadHandler();
         // remove "metalink" from Accept Type list to avoid loop in
         // tranparent metalink
-        removeMetalinkContentTypes(torrentRg);
+        util::removeMetalinkContentTypes(torrentRg);
         // make it in-memory download
         SharedHandle<PreDownloadHandler> preh
           (new MemoryBufferPreDownloadHandler());
@@ -306,7 +293,7 @@ Metalink2RequestGroup::createRequestGroup
     rg->setDownloadContext(dctx);
     // remove "metalink" from Accept Type list to avoid loop in
     // tranparent metalink
-    removeMetalinkContentTypes(rg);
+    util::removeMetalinkContentTypes(rg);
 #ifdef ENABLE_BITTORRENT
     // Inject depenency between rg and torrentRg here if
     // torrentRg.isNull() == false

+ 1 - 0
src/TrackerWatcherCommand.cc

@@ -248,6 +248,7 @@ TrackerWatcherCommand::createRequestGroup(const std::string& uri)
   rg->setDiskWriterFactory(dwf);
   rg->setFileAllocationEnabled(false);
   rg->setPreLocalFileCheckEnabled(false);
+  util::removeMetalinkContentTypes(rg);
   if(logger->info()) {
     logger->info("Creating tracker request group GID#%s",
                  util::itos(rg->getGID()).c_str());

+ 3 - 0
src/download_helper.cc

@@ -236,6 +236,9 @@ createBtRequestGroup(const std::string& torrentFilePath,
       ((*i).first, util::applyDir(dctx->getDir(), (*i).second));
   }
   rg->setDownloadContext(dctx);
+  // Remove "metalink" from Accept Type list to avoid server from
+  // responding Metalink file for web-seeding URIs.
+  util::removeMetalinkContentTypes(rg);
   return rg;
 }
 

+ 12 - 0
src/util.cc

@@ -76,6 +76,8 @@
 #include "array_fun.h"
 #include "a2functional.h"
 #include "bitfield.h"
+#include "DownloadHandlerConstants.h"
+#include "RequestGroup.h"
 #ifdef ENABLE_MESSAGE_DIGEST
 # include "MessageDigestHelper.h"
 #endif // ENABLE_MESSAGE_DIGEST
@@ -1291,6 +1293,16 @@ bool inSameCidrBlock(const std::string& ip1, const std::string& ip2, int bits)
   return in1.s_addr == in2.s_addr;
 }
 
+void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group)
+{
+  for(std::vector<std::string>::const_iterator i =
+	DownloadHandlerConstants::getMetalinkContentTypes().begin(),
+        eoi = DownloadHandlerConstants::getMetalinkContentTypes().end();
+      i != eoi; ++i) {
+    group->removeAcceptType(*i);
+  }
+}
+
 } // namespace util
 
 } // namespace aria2

+ 3 - 0
src/util.h

@@ -62,6 +62,7 @@ class Randomizer;
 class BitfieldMan;
 class BinaryStream;
 class FileEntry;
+class RequestGroup;
 
 #define STRTOLL(X) strtoll(X, reinterpret_cast<char**>(0), 10)
 #define STRTOULL(X) strtoull(X, reinterpret_cast<char**>(0), 10)
@@ -392,6 +393,8 @@ bool getCidrPrefix(struct in_addr& in, const std::string& ip, int bits);
 // Returns true if ip1 and ip2 are in the same CIDR block.
 bool inSameCidrBlock(const std::string& ip1, const std::string& ip2, int bits);
 
+void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group);
+
 } // namespace util
 
 } // namespace aria2