summaryrefslogtreecommitdiff
path: root/src/FtpInitiateConnectionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-09-24 17:01:57 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-09-24 17:01:57 +0000
commit6bc233f414b74bf3acf4abf5d5655c236e78ae41 (patch)
tree3458e27259263587e4219c0c0da2f7c270f96d83 /src/FtpInitiateConnectionCommand.cc
parentd717ffb1d00511958234d1eb4df1d60382297374 (diff)
2008-09-25 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Issue PWD command first and get working directory and use it as a prefix for CWD command. * src/DownloadEngine.cc * src/DownloadEngine.h * src/FtpConnection.cc * src/FtpConnection.h * src/FtpFinishDownloadCommand.cc * src/FtpInitiateConnectionCommand.cc * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * test/FtpConnectionTest.cc
Diffstat (limited to 'src/FtpInitiateConnectionCommand.cc')
-rw-r--r--src/FtpInitiateConnectionCommand.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/FtpInitiateConnectionCommand.cc b/src/FtpInitiateConnectionCommand.cc
index e1598efa..389689e3 100644
--- a/src/FtpInitiateConnectionCommand.cc
+++ b/src/FtpInitiateConnectionCommand.cc
@@ -47,6 +47,7 @@
#include "prefs.h"
#include "HttpConnection.h"
#include "Socket.h"
+#include <map>
namespace aria2 {
@@ -81,17 +82,20 @@ Command* FtpInitiateConnectionCommand::createNextCommand
throw DlAbortEx("ERROR");
}
} else {
+ std::map<std::string, std::string> options;
SharedHandle<SocketCore> pooledSocket =
- e->popPooledSocket(resolvedAddresses, req->getPort());
+ e->popPooledSocket(options, resolvedAddresses, req->getPort());
if(pooledSocket.isNull()) {
-
logger->info(MSG_CONNECTING_TO_SERVER, cuid, req->getHost().c_str(),
req->getPort());
socket.reset(new SocketCore());
socket->establishConnection(resolvedAddresses.front(), req->getPort());
command = new FtpNegotiationCommand(cuid, req, _requestGroup, e, socket);
} else {
- command = new FtpNegotiationCommand(cuid, req, _requestGroup, e, pooledSocket, FtpNegotiationCommand::SEQ_SEND_CWD);
+ command =
+ new FtpNegotiationCommand(cuid, req, _requestGroup, e, pooledSocket,
+ FtpNegotiationCommand::SEQ_SEND_CWD,
+ options["baseWorkingDir"]);
}
}
return command;