about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-05-10T00·38+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-05-10T00·38+0200
commit3a0cc43ac89ae8f778764c9f5e27b361e4986913 (patch)
treecb3a4a95ad67c62deb6007cb4c0ef846c16411b5
parentbe0b9dda31ab42bb2e077751fc75abbc945e407f (diff)
build-remote.pl: Properly close the SSH connection between attempts
-rw-r--r--perl/lib/Nix/SSH.pm1
-rwxr-xr-xscripts/build-remote.pl.in7
2 files changed, 5 insertions, 3 deletions
diff --git a/perl/lib/Nix/SSH.pm b/perl/lib/Nix/SSH.pm
index 68f4a628b072..584c44500981 100644
--- a/perl/lib/Nix/SSH.pm
+++ b/perl/lib/Nix/SSH.pm
@@ -44,6 +44,7 @@ sub closeSSHConnection {
     if ($sshStarted) {
         system("ssh $sshHost @sshOpts -O exit 2> /dev/null") == 0
             or warn "unable to stop SSH master: $?";
+        $sshStarted = 0;
     }
 }
 
diff --git a/scripts/build-remote.pl.in b/scripts/build-remote.pl.in
index dcd863003602..00d7cd8b4186 100755
--- a/scripts/build-remote.pl.in
+++ b/scripts/build-remote.pl.in
@@ -195,9 +195,10 @@ REQ: while (1) {
         # Connect to the selected machine.
         @sshOpts = ("-i", $machine->{sshKeys}, "-x");
         $hostName = $machine->{hostName};
-        last REQ if
-            openSSHConnection($hostName) &&
-            system("ssh $hostName @sshOpts nix-builds-inhibited < /dev/null > /dev/null 2>&1") != 0;
+        if (openSSHConnection($hostName)) {
+            last REQ if system("ssh $hostName @sshOpts nix-builds-inhibited < /dev/null > /dev/null 2>&1") != 0;
+            closeSSHConnection;
+        }
 
         warn "unable to open SSH connection to $hostName, trying other available machines...\n";
         $machine->{enabled} = 0;