summaryrefslogtreecommitdiff
path: root/src/FtpInitiateConnectionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-09 14:44:28 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-09 14:44:28 +0000
commitf25436725e2dd2a0d3ddb672415b0991ce4f2ce0 (patch)
tree1327033b5c2d4d99d5cde6114744495c44346517 /src/FtpInitiateConnectionCommand.cc
parent0b5e827ead424ff0a5de43bc707b52abb4badfcb (diff)
2008-05-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added the ability to reuse connection in FTP and it is enabled by default. It can be disabled by --ftp-reuse-connection=false option. * src/Command.cc * src/DownloadCommand.cc * src/FtpDownloadCommand.cc * src/FtpDownloadCommand.h * src/FtpFinishDownloadCommand.cc * src/FtpFinishDownloadCommand.h * src/FtpInitiateConnectionCommand.cc * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HelpItemFactory.cc * src/Makefile.am * src/Makefile.in * src/OptionHandlerFactory.cc * src/option_processing.cc * src/prefs.h * src/usage_text.h
Diffstat (limited to 'src/FtpInitiateConnectionCommand.cc')
-rw-r--r--src/FtpInitiateConnectionCommand.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/FtpInitiateConnectionCommand.cc b/src/FtpInitiateConnectionCommand.cc
index 1908483f..e5a94d56 100644
--- a/src/FtpInitiateConnectionCommand.cc
+++ b/src/FtpInitiateConnectionCommand.cc
@@ -80,10 +80,17 @@ Command* FtpInitiateConnectionCommand::createNextCommand
throw DlAbortEx("ERROR");
}
} else {
- logger->info(MSG_CONNECTING_TO_SERVER, cuid, req->getHost().c_str(),
- req->getPort());
- socket->establishConnection(resolvedAddresses.front(), req->getPort());
- command = new FtpNegotiationCommand(cuid, req, _requestGroup, e, socket);
+ SharedHandle<SocketCore> pooledSocket =
+ e->popPooledSocket(resolvedAddresses, req->getPort());
+ if(pooledSocket.isNull()) {
+
+ logger->info(MSG_CONNECTING_TO_SERVER, cuid, req->getHost().c_str(),
+ req->getPort());
+ 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);
+ }
}
return command;
}