Repository: mina-sshd Updated Branches: refs/heads/master de0c923a4 -> bfe6cb753
[SSHD-333] Ephemeral port handling is faulty Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/fa597596 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/fa597596 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/fa597596 Branch: refs/heads/master Commit: fa597596e51bd31b7aaa51e303c9f764f89ff2ed Parents: de0c923 Author: Guillaume Nodet <[email protected]> Authored: Wed Jul 9 07:53:43 2014 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Wed Jul 9 07:53:43 2014 +0200 ---------------------------------------------------------------------- .../src/main/java/org/apache/sshd/SshServer.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/fa597596/sshd-core/src/main/java/org/apache/sshd/SshServer.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/SshServer.java b/sshd-core/src/main/java/org/apache/sshd/SshServer.java index 7074edc..5aa8736 100644 --- a/sshd-core/src/main/java/org/apache/sshd/SshServer.java +++ b/sshd-core/src/main/java/org/apache/sshd/SshServer.java @@ -335,22 +335,22 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa timeoutListenerFuture = getScheduledExecutorService() .scheduleAtFixedRate(sessionTimeoutListener, 1, 1, TimeUnit.SECONDS); - if (port == 0) { - port = IoUtils.getFreePort(); - } if (host != null) { String[] hosts = host.split(","); - LinkedList<InetSocketAddress> addresses = new LinkedList<InetSocketAddress>(); for (String host : hosts) { InetAddress[] inetAddresses = InetAddress.getAllByName(host); for (InetAddress inetAddress : inetAddresses) { - InetSocketAddress inetSocketAddress = new InetSocketAddress(inetAddress, port); - addresses.add(inetSocketAddress); + acceptor.bind(new InetSocketAddress(inetAddress, port)); + if (port == 0) { + port = ((InetSocketAddress) acceptor.getBoundAddresses().iterator().next()).getPort(); + } } } - acceptor.bind(addresses); } else { - acceptor.bind(Collections.singleton(new InetSocketAddress(port))); + acceptor.bind(new InetSocketAddress(port)); + if (port == 0) { + port = ((InetSocketAddress) acceptor.getBoundAddresses().iterator().next()).getPort(); + } } }
