summaryrefslogtreecommitdiff
path: root/src/FtpNegotiationCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-04-01 23:51:33 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-04-01 23:51:33 +0900
commit26972b85359a4ab1f00545c9082a6c1b7d5a2593 (patch)
tree37c4d9c264e6281424137af235d0cef74b448bdb /src/FtpNegotiationCommand.cc
parentcf23e3e11dfc7abfd4b95c5ce200404113cbe8e8 (diff)
Rewrite backup connection handling
Now dedicated ConnectCommand handles connection establishment. It checks whether connection is established or not. It also handles backup connection. The next Command creation is abstracted using ControlChain struct template.
Diffstat (limited to 'src/FtpNegotiationCommand.cc')
-rw-r--r--src/FtpNegotiationCommand.cc52
1 files changed, 1 insertions, 51 deletions
diff --git a/src/FtpNegotiationCommand.cc b/src/FtpNegotiationCommand.cc
index b21ff71f..9965781a 100644
--- a/src/FtpNegotiationCommand.cc
+++ b/src/FtpNegotiationCommand.cc
@@ -74,7 +74,6 @@
#include "CheckIntegrityEntry.h"
#include "error_code.h"
#include "SocketRecvBuffer.h"
-#include "BackupIPv4ConnectCommand.h"
#ifdef ENABLE_MESSAGE_DIGEST
# include "ChecksumCheckIntegrityEntry.h"
#endif // ENABLE_MESSAGE_DIGEST
@@ -102,20 +101,9 @@ FtpNegotiationCommand::FtpNegotiationCommand
if(seq == SEQ_RECV_GREETING) {
setTimeout(getOption()->getAsInt(PREF_CONNECT_TIMEOUT));
}
- disableReadCheckSocket();
- setWriteCheckSocket(getSocket());
}
-FtpNegotiationCommand::~FtpNegotiationCommand()
-{
- if(backupConnectionInfo_) {
- backupConnectionInfo_->cancel = true;
- }
-}
-
-bool FtpNegotiationCommand::noCheck() {
- return backupConnectionInfo_ && !backupConnectionInfo_->ipaddr.empty();
-}
+FtpNegotiationCommand::~FtpNegotiationCommand() {}
bool FtpNegotiationCommand::executeInternal() {
while(processSequence(getSegments().front()));
@@ -155,38 +143,6 @@ bool FtpNegotiationCommand::executeInternal() {
}
bool FtpNegotiationCommand::recvGreeting() {
- if(backupConnectionInfo_ && !backupConnectionInfo_->ipaddr.empty()) {
- A2_LOG_INFO(fmt("CUID#%"PRId64" - Use backup connection address %s",
- getCuid(), backupConnectionInfo_->ipaddr.c_str()));
- getDownloadEngine()->markBadIPAddress
- (getRequest()->getConnectedHostname(),
- getRequest()->getConnectedAddr(),
- getRequest()->getConnectedPort());
-
- getRequest()->setConnectedAddrInfo(getRequest()->getConnectedHostname(),
- backupConnectionInfo_->ipaddr,
- getRequest()->getConnectedPort());
-
- FtpNegotiationCommand* c =
- new FtpNegotiationCommand(getCuid(), getRequest(), getFileEntry(),
- getRequestGroup(), getDownloadEngine(),
- backupConnectionInfo_->socket);
- c->setStatus(STATUS_ONESHOT_REALTIME);
- getDownloadEngine()->setNoWait(true);
- getDownloadEngine()->addCommand(c);
- backupConnectionInfo_.reset();
- return true;
- }
- if(!checkIfConnectionEstablished
- (getSocket(), getRequest()->getConnectedHostname(),
- getRequest()->getConnectedAddr(), getRequest()->getConnectedPort())) {
- sequence_ = SEQ_EXIT;
- return false;
- }
- if(backupConnectionInfo_) {
- backupConnectionInfo_->cancel = true;
- backupConnectionInfo_.reset();
- }
setTimeout(getRequestGroup()->getTimeout());
//socket->setBlockingMode();
disableWriteCheckSocket();
@@ -1009,10 +965,4 @@ void FtpNegotiationCommand::onDryRunFileFound()
sequence_ = SEQ_HEAD_OK;
}
-void FtpNegotiationCommand::setBackupConnectInfo
-(const SharedHandle<BackupConnectInfo>& info)
-{
- backupConnectionInfo_ = info;
-}
-
} // namespace aria2