We don't accept Metalink content-type after first server response.
@@ -204,6 +204,7 @@ bool HttpResponseCommand::executeInternal()
}
if(!getPieceStorage()) {
+ util::removeMetalinkContentTypes(getRequestGroup());
uint64_t totalLength = httpResponse->getEntityLength();
getFileEntry()->setLength(totalLength);
if(getFileEntry()->getPath().empty()) {
@@ -1459,6 +1459,11 @@ bool inSameCidrBlock(const std::string& ip1, const std::string& ip2, int bits)
void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group)
+{
+ removeMetalinkContentTypes(group.get());
+}
+
+void removeMetalinkContentTypes(RequestGroup* group)
{
for(std::vector<std::string>::const_iterator i =
DownloadHandlerConstants::getMetalinkContentTypes().begin(),
@@ -415,6 +415,7 @@ bool getCidrPrefix(struct in_addr& in, const std::string& ip, int bits);
bool inSameCidrBlock(const std::string& ip1, const std::string& ip2, int bits);
void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group);
+void removeMetalinkContentTypes(RequestGroup* group);
// No throw
void executeHookByOptName