diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-09 14:44:28 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-09 14:44:28 +0000 |
| commit | f25436725e2dd2a0d3ddb672415b0991ce4f2ce0 (patch) | |
| tree | 1327033b5c2d4d99d5cde6114744495c44346517 /src/FtpInitiateConnectionCommand.cc | |
| parent | 0b5e827ead424ff0a5de43bc707b52abb4badfcb (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.cc | 15 |
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; } |
