[sshd] Fix calculation of timeout in AbstractClientProxyConnector

The previous implementation mixed nano seconds (elapsed) and milli
seconds (remaining) without conversion.

Change-Id: I9e1654afa47fa32c94808af3b2dd0418a372fb00
diff --git a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/proxy/AbstractClientProxyConnector.java b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/proxy/AbstractClientProxyConnector.java
index a8e33af..a05d641 100644
--- a/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/proxy/AbstractClientProxyConnector.java
+++ b/org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/proxy/AbstractClientProxyConnector.java
@@ -27,8 +27,8 @@
 public abstract class AbstractClientProxyConnector
 		implements StatefulProxyConnector {
 
-	private static final long DEFAULT_PROXY_TIMEOUT_MILLIS = TimeUnit.SECONDS
-			.toMillis(30L);
+	private static final long DEFAULT_PROXY_TIMEOUT_NANOS = TimeUnit.SECONDS
+			.toNanos(30L);
 
 	/** Guards {@link #done} and {@link #bufferedCommands}. */
 	private final Object lock = new Object();
@@ -39,7 +39,7 @@
 
 	private AtomicReference<Runnable> unregister = new AtomicReference<>();
 
-	private long remainingProxyProtocolTime = DEFAULT_PROXY_TIMEOUT_MILLIS;
+	private long remainingProxyProtocolTime = DEFAULT_PROXY_TIMEOUT_NANOS;
 
 	private long lastProxyOperationTime = 0L;
 
@@ -85,12 +85,12 @@
 	 *            to initialize for
 	 */
 	protected void init(ClientSession session) {
-		remainingProxyProtocolTime = session.getLongProperty(
+		long millis = session.getLongProperty(
 				StatefulProxyConnector.TIMEOUT_PROPERTY,
-				DEFAULT_PROXY_TIMEOUT_MILLIS);
-		if (remainingProxyProtocolTime <= 0L) {
-			remainingProxyProtocolTime = DEFAULT_PROXY_TIMEOUT_MILLIS;
-		}
+				0);
+		remainingProxyProtocolTime = (millis > 0)
+				? TimeUnit.MILLISECONDS.toNanos(millis)
+				: DEFAULT_PROXY_TIMEOUT_NANOS;
 		if (session instanceof JGitClientSession) {
 			JGitClientSession s = (JGitClientSession) session;
 			unregister.set(() -> s.setProxyHandler(null));
@@ -115,12 +115,9 @@
 		if (last != 0L) {
 			long elapsed = now - last;
 			remaining -= elapsed;
-			if (remaining < 0L) {
-				remaining = 10L; // Give it grace period.
-			}
+			remainingProxyProtocolTime = remaining;
 		}
-		remainingProxyProtocolTime = remaining;
-		return remaining;
+		return Math.max(remaining / 1_000_000L, 10L); // Give it grace period.
 	}
 
 	/**