summaryrefslogtreecommitdiff
path: root/src/FtpNegotiationCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-02 15:18:13 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-02 15:18:13 +0000
commit01fdb2aaeb4dcb351931c14ca63d9347f0adc529 (patch)
tree94f6e4a327c77b358316d5790224d9cccee8e3c1 /src/FtpNegotiationCommand.cc
parent8796993c71c8a326c2f261c01db5066cfc3b2848 (diff)
2009-07-03 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Try all available addresses returned by DNS until it gets connected in HTTP(S)/FTP download * src/AbstractCommand.cc * src/AbstractCommand.h * src/AbstractProxyRequestCommand.cc * src/AbstractProxyRequestCommand.h * src/DNSCache.h * src/DownloadEngine.cc * src/DownloadEngine.h * src/FtpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.h * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HttpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.h * src/HttpRequestCommand.cc * src/HttpRequestCommand.h * src/InitiateConnectionCommand.cc * src/InitiateConnectionCommand.h * test/DNSCacheTest.cc * test/Makefile.am * test/SimpleDNSCacheTest.cc
Diffstat (limited to 'src/FtpNegotiationCommand.cc')
-rw-r--r--src/FtpNegotiationCommand.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/FtpNegotiationCommand.cc b/src/FtpNegotiationCommand.cc
index 95cda465..a4312c70 100644
--- a/src/FtpNegotiationCommand.cc
+++ b/src/FtpNegotiationCommand.cc
@@ -118,6 +118,8 @@ bool FtpNegotiationCommand::executeInternal() {
sequence = SEQ_PREPARE_SERVER_SOCKET;
}
return false;
+ } else if(sequence == SEQ_EXIT) {
+ return true;
} else {
e->commands.push_back(this);
return false;
@@ -125,7 +127,11 @@ bool FtpNegotiationCommand::executeInternal() {
}
bool FtpNegotiationCommand::recvGreeting() {
- checkIfConnectionEstablished(socket);
+ if(!checkIfConnectionEstablished
+ (socket, _connectedHostname, _connectedAddr, _connectedPort)) {
+ sequence = SEQ_EXIT;
+ return false;
+ }
setTimeout(_requestGroup->getTimeout());
//socket->setBlockingMode();
disableWriteCheckSocket();