summaryrefslogtreecommitdiff
path: root/src/FtpInitiateConnectionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2015-05-12 00:32:08 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2015-05-12 00:32:30 +0900
commit21c328fc113d28f3bbb1b1d74b53e4e2a36c4e9d (patch)
tree3b3f92d2031d452e3b24e430112a18eab3ac833a /src/FtpInitiateConnectionCommand.cc
parentd0ad7033c3e11549529b44990ef022a655877601 (diff)
sftp: Make sftp works through HTTP proxy
Diffstat (limited to 'src/FtpInitiateConnectionCommand.cc')
-rw-r--r--src/FtpInitiateConnectionCommand.cc27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/FtpInitiateConnectionCommand.cc b/src/FtpInitiateConnectionCommand.cc
index 3950fed0..78c0ca0c 100644
--- a/src/FtpInitiateConnectionCommand.cc
+++ b/src/FtpInitiateConnectionCommand.cc
@@ -132,18 +132,31 @@ std::unique_ptr<Command> FtpInitiateConnectionCommand::createNextCommandProxied
setConnectedAddrInfo(getRequest(), hostname, pooledSocket);
if(proxyMethod == V_TUNNEL) {
+ if (getRequest()->getProtocol() == "sftp") {
+ return make_unique<SftpNegotiationCommand>
+ (getCuid(),
+ getRequest(),
+ getFileEntry(),
+ getRequestGroup(),
+ getDownloadEngine(),
+ pooledSocket,
+ SftpNegotiationCommand::SEQ_SFTP_OPEN);
+ }
+
// options contains "baseWorkingDir"
return make_unique<FtpNegotiationCommand>
(getCuid(),
- getRequest(),
- getFileEntry(),
- getRequestGroup(),
- getDownloadEngine(),
- pooledSocket,
- FtpNegotiationCommand::SEQ_SEND_CWD_PREP,
- options);
+ getRequest(),
+ getFileEntry(),
+ getRequestGroup(),
+ getDownloadEngine(),
+ pooledSocket,
+ FtpNegotiationCommand::SEQ_SEND_CWD_PREP,
+ options);
}
+ assert(getRequest()->getProtocol() == "ftp");
+
if(proxyMethod != V_GET) {
assert(0);
return nullptr;