summaryrefslogtreecommitdiff
path: root/src/HttpRequest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-09-25 16:06:29 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-09-25 16:06:29 +0000
commit87a5bb50c2bb9d1232e9160def0f85d5f05e7813 (patch)
tree54b0684dc1a55dbedf851f2f7d86c9746d87bcd0 /src/HttpRequest.cc
parent789e1926cb5f07ce5a82c8d651dbd5a510759c8d (diff)
2008-09-26 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
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
Diffstat (limited to 'src/HttpRequest.cc')
-rw-r--r--src/HttpRequest.cc21
1 files changed, 16 insertions, 5 deletions
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 <numeric>
+#include <cassert>
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> 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";