diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-04-01 00:12:27 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-04-01 00:12:27 +0900 |
| commit | 597e1a5c1b10aa3668f91bcae02a864dcd0c045b (patch) | |
| tree | 4437c2896b410b441013452b7385dfa303441772 /src/FtpInitiateConnectionCommand.cc | |
| parent | d671d8bf3672cbefc06f3727f82b77872abe6120 (diff) | |
Implement simple Happy Eyeballs for HTTP/FTP downloads
Diffstat (limited to 'src/FtpInitiateConnectionCommand.cc')
| -rw-r--r-- | src/FtpInitiateConnectionCommand.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/FtpInitiateConnectionCommand.cc b/src/FtpInitiateConnectionCommand.cc index 374bfccb..1daf5e61 100644 --- a/src/FtpInitiateConnectionCommand.cc +++ b/src/FtpInitiateConnectionCommand.cc @@ -56,6 +56,7 @@ #include "AuthConfig.h" #include "fmt.h" #include "SocketRecvBuffer.h" +#include "BackupIPv4ConnectCommand.h" namespace aria2 { @@ -110,12 +111,22 @@ Command* FtpInitiateConnectionCommand::createNextCommand getRequestGroup(), hc, getDownloadEngine(), getSocket()); c->setProxyRequest(proxyRequest); + SharedHandle<BackupConnectInfo> backupConnectInfo + = createBackupIPv4ConnectCommand(hostname, addr, port, c); + if(backupConnectInfo) { + c->setBackupConnectInfo(backupConnectInfo); + } command = c; } else if(proxyMethod == V_TUNNEL) { FtpTunnelRequestCommand* c = new FtpTunnelRequestCommand(getCuid(), getRequest(), getFileEntry(), getRequestGroup(), getDownloadEngine(), proxyRequest, getSocket()); + SharedHandle<BackupConnectInfo> backupConnectInfo + = createBackupIPv4ConnectCommand(hostname, addr, port, c); + if(backupConnectInfo) { + c->setBackupConnectInfo(backupConnectInfo); + } command = c; } else { // TODO @@ -163,11 +174,16 @@ Command* FtpInitiateConnectionCommand::createNextCommand getCuid(), addr.c_str(), port)); createSocket(); getSocket()->establishConnection(addr, port); + getRequest()->setConnectedAddrInfo(hostname, addr, port); FtpNegotiationCommand* c = new FtpNegotiationCommand(getCuid(), getRequest(), getFileEntry(), getRequestGroup(), getDownloadEngine(), getSocket()); - getRequest()->setConnectedAddrInfo(hostname, addr, port); + SharedHandle<BackupConnectInfo> backupConnectInfo + = createBackupIPv4ConnectCommand(hostname, addr, port, c); + if(backupConnectInfo) { + c->setBackupConnectInfo(backupConnectInfo); + } command = c; } else { // options contains "baseWorkingDir" |
