From 443673620d908cb35c569c929701ba6b4c9dfc69 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 4 Feb 2010 02:38:40 +0000 Subject: [PATCH] * Don't use ssh's -f flag since it leads to lots of lingering ssh processes. --- scripts/ssh.pm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scripts/ssh.pm b/scripts/ssh.pm index 233c5a4aa..c6d667a65 100644 --- a/scripts/ssh.pm +++ b/scripts/ssh.pm @@ -18,8 +18,18 @@ sub openSSHConnection { or die "cannot create a temporary directory"; push @sshOpts, "-S", "$tmpDir/control"; - system("ssh $sshHost @sshOpts -M -N -f") == 0 - or return 0; + + # Start the master. We can't use the `-f' flag (fork into + # background after establishing the connection) because then the + # child continues to run if we are killed. So instead make SSH + # print "started" when it has established the connection, and wait + # until we see that. + open SSH, "ssh $sshHost @sshOpts -M -N -o LocalCommand='echo started' -o PermitLocalCommand=yes |" or die; + while () { + chomp; + last if /started/; + } + $sshStarted = 1; return 1; }