From 87a5bb50c2bb9d1232e9160def0f85d5f05e7813 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 25 Sep 2008 16:06:29 +0000 Subject: 2008-09-26 Tatsuhiro Tsujikawa Reverted previous change. Insert username+'@' to URI(after ftp://) when URI is FTP scheme and username is not in URI. * src/HttpRequest.cc * src/Request.cc * test/HttpRequestTest.cc * test/RequestTest.cc --- src/HttpRequest.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/HttpRequest.cc') diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 82d9c443..a5dd0e59 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -46,6 +46,7 @@ #include "a2functional.h" #include "TimeA2.h" #include +#include namespace aria2 { @@ -133,9 +134,21 @@ std::string HttpRequest::getHostText(const std::string& host, uint16_t port) con std::string HttpRequest::createRequest() const { + SharedHandle authConfig = AuthConfigFactorySingleton::instance() + ->createAuthConfig(request); + std::string requestLine = "GET "; if(getProtocol() == Request::PROTO_FTP || proxyEnabled) { - requestLine += getCurrentURI(); + if(getProtocol() == Request::PROTO_FTP && + request->getUsername().empty() && !authConfig->getUser().empty()) { + // Insert user into URI, like ftp://USER@host/ + std::string uri = getCurrentURI(); + assert(uri.size() >= 6); + uri.insert(6, Util::urlencode(authConfig->getUser())+"@"); + requestLine += uri; + } else { + requestLine += getCurrentURI(); + } } else { if(getDir() == A2STR::SLASH_C) { requestLine += getDir(); @@ -192,11 +205,9 @@ std::string HttpRequest::createRequest() const if(proxyEnabled && proxyAuthEnabled) { requestLine += getProxyAuthString(); } - std::string authString = AuthConfigFactorySingleton::instance() - ->createAuthConfig(request)->getAuthText(); - if(authString != ":") { + if(!authConfig->getUser().empty()) { requestLine += "Authorization: Basic "+ - Base64::encode(authString)+"\r\n"; + Base64::encode(authConfig->getAuthText())+"\r\n"; } if(getPreviousURI().size()) { requestLine += "Referer: "+getPreviousURI()+"\r\n"; -- cgit