diff options
Diffstat (limited to 'org.eclipse.jgit/src')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java index fb2038b862..d73e2055a5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java @@ -147,17 +147,25 @@ public class TransportGitSsh extends SshTransport implements PackTransport { ChannelExec exec(final String exe) throws TransportException { initSession(); - final int tms = getTimeout() > 0 ? getTimeout() * 1000 : 0; try { final ChannelExec channel = (ChannelExec) sock.openChannel("exec"); channel.setCommand(commandFor(exe)); - channel.connect(tms); return channel; } catch (JSchException je) { throw new TransportException(uri, je.getMessage(), je); } } + private void connect(ChannelExec channel) throws TransportException { + try { + channel.connect(getTimeout() > 0 ? getTimeout() * 1000 : 0); + if (!channel.isConnected()) + throw new TransportException(uri, "connection failed"); + } catch (JSchException e) { + throw new TransportException(uri, e.getMessage(), e); + } + } + void checkExecFailure(int status, String exe, String why) throws TransportException { if (status == 127) { @@ -235,14 +243,13 @@ public class TransportGitSsh extends SshTransport implements PackTransport { setMessageWriter(msg); channel = exec(getOptionUploadPack()); - if (!channel.isConnected()) - throw new TransportException(uri, "connection failed"); final InputStream upErr = channel.getErrStream(); errorThread = new StreamCopyThread(upErr, msg.getRawStream()); errorThread.start(); init(channel.getInputStream(), outputStream(channel)); + connect(channel); } catch (TransportException err) { close(); @@ -304,14 +311,13 @@ public class TransportGitSsh extends SshTransport implements PackTransport { setMessageWriter(msg); channel = exec(getOptionReceivePack()); - if (!channel.isConnected()) - throw new TransportException(uri, "connection failed"); final InputStream rpErr = channel.getErrStream(); errorThread = new StreamCopyThread(rpErr, msg.getRawStream()); errorThread.start(); init(channel.getInputStream(), outputStream(channel)); + connect(channel); } catch (TransportException err) { close(); |