diff --git a/src/OptionHandlerFactory.cc b/src/OptionHandlerFactory.cc index 4e8d3ed3..f518adb5 100644 --- a/src/OptionHandlerFactory.cc +++ b/src/OptionHandlerFactory.cc @@ -1692,6 +1692,14 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers() op->addTag(TAG_METALINK); handlers.push_back(op); } + { + SharedHandle op(new DefaultOptionHandler + (PREF_METALINK_BASE_URI, + TEXT_METALINK_BASE_URI, + NO_DEFAULT_VALUE)); + op->addTag(TAG_METALINK); + handlers.push_back(op); + } { SharedHandle op(new BooleanOptionHandler (PREF_METALINK_ENABLE_UNIQUE_PROTOCOL, diff --git a/src/download_helper.cc b/src/download_helper.cc index 1ccf4464..b31bc992 100644 --- a/src/download_helper.cc +++ b/src/download_helper.cc @@ -352,11 +352,13 @@ void createRequestGroupForMetalink if(metalinkData.empty()) { Metalink2RequestGroup().generate(result, option->get(PREF_METALINK_FILE), - option); + option, + option->get(PREF_METALINK_BASE_URI)); } else { SharedHandle dw(new ByteArrayDiskWriter()); dw->setString(metalinkData); - Metalink2RequestGroup().generate(result, dw, option); + Metalink2RequestGroup().generate(result, dw, option, + option->get(PREF_METALINK_BASE_URI)); } } #endif // ENABLE_METALINK @@ -417,7 +419,8 @@ public: #ifdef ENABLE_METALINK else if(!ignoreLocalPath_ && detector_.guessMetalinkFile(uri)) { try { - Metalink2RequestGroup().generate(requestGroups_, uri, option_); + Metalink2RequestGroup().generate(requestGroups_, uri, option_, + option_->get(PREF_METALINK_BASE_URI)); } catch(RecoverableException& e) { if(throwOnError_) { throw; diff --git a/src/main.cc b/src/main.cc index fd621a2b..ce0657df 100644 --- a/src/main.cc +++ b/src/main.cc @@ -130,7 +130,8 @@ void showMetalinkFile (const std::string& uri, const SharedHandle