diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-07-02 15:18:13 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-07-02 15:18:13 +0000 |
| commit | 01fdb2aaeb4dcb351931c14ca63d9347f0adc529 (patch) | |
| tree | 94f6e4a327c77b358316d5790224d9cccee8e3c1 /src/FtpInitiateConnectionCommand.cc | |
| parent | 8796993c71c8a326c2f261c01db5066cfc3b2848 (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/FtpInitiateConnectionCommand.cc')
| -rw-r--r-- | src/FtpInitiateConnectionCommand.cc | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/FtpInitiateConnectionCommand.cc b/src/FtpInitiateConnectionCommand.cc index 8fc880ca..c2293204 100644 --- a/src/FtpInitiateConnectionCommand.cc +++ b/src/FtpInitiateConnectionCommand.cc @@ -65,7 +65,8 @@ FtpInitiateConnectionCommand::FtpInitiateConnectionCommand FtpInitiateConnectionCommand::~FtpInitiateConnectionCommand() {} Command* FtpInitiateConnectionCommand::createNextCommand -(const std::deque<std::string>& resolvedAddresses, +(const std::string& hostname, const std::string& addr, uint16_t port, + const std::deque<std::string>& resolvedAddresses, const SharedHandle<Request>& proxyRequest) { Command* command; @@ -75,11 +76,9 @@ Command* FtpInitiateConnectionCommand::createNextCommand e->popPooledSocket(options, req->getHost(), req->getPort()); std::string proxyMethod = resolveProxyMethod(req->getProtocol()); if(pooledSocket.isNull()) { - logger->info(MSG_CONNECTING_TO_SERVER, cuid, - proxyRequest->getHost().c_str(), proxyRequest->getPort()); + logger->info(MSG_CONNECTING_TO_SERVER, cuid, addr.c_str(), port); socket.reset(new SocketCore()); - socket->establishConnection(resolvedAddresses.front(), - proxyRequest->getPort()); + socket->establishConnection(addr, port); if(proxyMethod == V_GET) { // Use GET for FTP via HTTP proxy. @@ -90,12 +89,16 @@ Command* FtpInitiateConnectionCommand::createNextCommand HttpRequestCommand* c = new HttpRequestCommand(cuid, req, _fileEntry, _requestGroup, hc, e, socket); + c->setConnectedAddr(hostname, addr, port); c->setProxyRequest(proxyRequest); command = c; } else if(proxyMethod == V_TUNNEL) { - command = new FtpTunnelRequestCommand(cuid, req, _fileEntry, - _requestGroup, e, - proxyRequest, socket); + FtpTunnelRequestCommand* c = + new FtpTunnelRequestCommand(cuid, req, _fileEntry, + _requestGroup, e, + proxyRequest, socket); + c->setConnectedAddr(hostname, addr, port); + command = c; } else { // TODO throw DL_ABORT_EX("ERROR"); @@ -128,12 +131,14 @@ Command* FtpInitiateConnectionCommand::createNextCommand SharedHandle<SocketCore> pooledSocket = e->popPooledSocket(options, resolvedAddresses, req->getPort()); if(pooledSocket.isNull()) { - logger->info(MSG_CONNECTING_TO_SERVER, cuid, req->getHost().c_str(), - req->getPort()); + logger->info(MSG_CONNECTING_TO_SERVER, cuid, addr.c_str(), port); socket.reset(new SocketCore()); - socket->establishConnection(resolvedAddresses.front(), req->getPort()); - command = new FtpNegotiationCommand(cuid, req, _fileEntry, - _requestGroup, e, socket); + socket->establishConnection(addr, port); + FtpNegotiationCommand* c = + new FtpNegotiationCommand(cuid, req, _fileEntry, + _requestGroup, e, socket); + c->setConnectedAddr(hostname, addr, port); + command = c; } else { command = new FtpNegotiationCommand(cuid, req, _fileEntry, |
