aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/ssh.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-03-21 14:35:50 +0100
committerEelco Dolstra <edolstra@gmail.com>2017-03-21 14:35:50 +0100
commit3229f85585136e5c1d53a2ef2a434fdec75d912e (patch)
treea8bb951e6b228d9739e4cfd34f27dd0e8bd08f59 /src/libstore/ssh.cc
parent20df50d8e15da7b5d39986a4db533d6c41f0786c (diff)
Honor $NIX_SSHOPTS again
NixOps needs this.
Diffstat (limited to 'src/libstore/ssh.cc')
-rw-r--r--src/libstore/ssh.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/libstore/ssh.cc b/src/libstore/ssh.cc
index 4f88fa64d..e54f3f4ba 100644
--- a/src/libstore/ssh.cc
+++ b/src/libstore/ssh.cc
@@ -2,6 +2,16 @@
namespace nix {
+void SSHMaster::addCommonSSHOpts(Strings & args)
+{
+ for (auto & i : tokenizeString<Strings>(getEnv("NIX_SSHOPTS")))
+ args.push_back(i);
+ if (!keyFile.empty())
+ args.insert(args.end(), {"-i", keyFile});
+ if (compress)
+ args.push_back("-C");
+}
+
std::unique_ptr<SSHMaster::Connection> SSHMaster::startCommand(const std::string & command)
{
Path socketPath = startMaster();
@@ -23,10 +33,7 @@ std::unique_ptr<SSHMaster::Connection> SSHMaster::startCommand(const std::string
throw SysError("duping over stdout");
Strings args = { "ssh", host.c_str(), "-x", "-a" };
- if (!keyFile.empty())
- args.insert(args.end(), {"-i", keyFile});
- if (compress)
- args.push_back("-C");
+ addCommonSSHOpts(args);
if (socketPath != "")
args.insert(args.end(), {"-S", socketPath});
args.push_back(command);
@@ -73,11 +80,7 @@ Path SSHMaster::startMaster()
, "-o", "LocalCommand=echo started"
, "-o", "PermitLocalCommand=yes"
};
- if (!keyFile.empty())
- args.insert(args.end(), {"-i", keyFile});
- if (compress)
- args.push_back("-C");
-
+ addCommonSSHOpts(args);
execvp(args.begin()->c_str(), stringsToCharPtrs(args).data());
throw SysError("starting SSH master");