You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2017/10/11 17:34:20 UTC
[1/3] mina-sshd git commit: Activated Checkstyle's EmptyLineSeparator
rule
Repository: mina-sshd
Updated Branches:
refs/heads/master 2529a4c3d -> 693fa5d90
Activated Checkstyle's EmptyLineSeparator rule
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/55ca8818
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/55ca8818
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/55ca8818
Branch: refs/heads/master
Commit: 55ca88185e90c04dc554a9b87abd67a392461219
Parents: 0e99597
Author: Lyor Goldstein <ly...@gmail.com>
Authored: Wed Oct 11 19:12:08 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Wed Oct 11 20:35:15 2017 +0300
----------------------------------------------------------------------
sshd-checkstyle.xml | 6 ++++++
.../sshd/client/ClientAuthenticationManager.java | 8 ++++++++
.../apache/sshd/client/ClientFactoryManager.java | 3 +++
.../apache/sshd/client/auth/AbstractUserAuth.java | 1 +
.../client/session/ClientProxyConnectorHolder.java | 1 +
.../sshd/client/simple/AbstractSimpleClient.java | 1 +
.../client/subsystem/sftp/DefaultSftpClient.java | 5 +++--
.../sshd/client/subsystem/sftp/SftpClient.java | 8 ++++++--
.../sshd/client/subsystem/sftp/SftpFileSystem.java | 4 ++--
.../apache/sshd/common/PropertyResolverUtils.java | 2 ++
.../org/apache/sshd/common/channel/Channel.java | 2 ++
.../keys/loader/PrivateKeyEncryptionContext.java | 5 +++--
.../pem/AbstractPEMResourceKeyPairParser.java | 1 -
.../org/apache/sshd/common/digest/BaseDigest.java | 1 -
.../common/forward/DefaultForwardingFilter.java | 1 -
.../sshd/common/forward/ForwardingFilter.java | 1 -
.../PortForwardingEventListenerManagerHolder.java | 1 +
.../sshd/common/forward/TcpipClientChannel.java | 5 ++---
.../apache/sshd/common/future/DefaultSshFuture.java | 8 +++++++-
.../apache/sshd/common/kex/KexFactoryManager.java | 16 ++++++++++++++++
.../common/keyprovider/KeyPairProviderHolder.java | 1 +
.../java/org/apache/sshd/common/scp/ScpHelper.java | 1 -
.../sshd/common/session/ConnectionService.java | 1 +
.../org/apache/sshd/common/session/Session.java | 1 +
.../common/signature/SignatureFactoriesManager.java | 5 +++++
.../sshd/common/subsystem/sftp/SftpHelper.java | 1 -
.../org/apache/sshd/common/util/GenericUtils.java | 2 ++
.../apache/sshd/common/util/io/der/DERWriter.java | 1 -
.../sshd/server/ServerAuthenticationManager.java | 10 ++++++++++
.../org/apache/sshd/server/kex/DHGEXServer.java | 1 -
.../server/session/ServerProxyAcceptorHolder.java | 1 +
.../sftp/AbstractSftpEventListenerManager.java | 1 -
.../sftp/SftpFileSystemAccessorManager.java | 1 +
.../client/config/hosts/HostConfigEntryTest.java | 1 +
.../java/org/apache/sshd/client/kex/KexTest.java | 1 -
.../channel/ChannelPipedOutputStreamTest.java | 6 +++---
.../file/root/RootedFileSystemProviderTest.java | 1 +
.../java/org/apache/sshd/common/mac/MacTest.java | 1 -
.../sshd/server/auth/WelcomeBannerPhaseTest.java | 1 -
.../server/jaas/JaasPasswordAuthenticatorTest.java | 2 --
40 files changed, 91 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-checkstyle.xml
----------------------------------------------------------------------
diff --git a/sshd-checkstyle.xml b/sshd-checkstyle.xml
index 3a9f72e..0f5c66f 100644
--- a/sshd-checkstyle.xml
+++ b/sshd-checkstyle.xml
@@ -111,6 +111,12 @@
<module name="NoWhitespaceAfter">
<property name="tokens" value="ARRAY_INIT,BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS" />
</module>
+ <module name="EmptyLineSeparator">
+ <property name="tokens" value="IMPORT,CLASS_DEF,INTERFACE_DEF,STATIC_INIT,INSTANCE_INIT,METHOD_DEF,CTOR_DEF" />
+ <property name="allowMultipleEmptyLines" value="false" />
+ <property name="allowNoEmptyLineBetweenFields" value="true" />
+ <property name="allowMultipleEmptyLinesInsideClassMembers" value="false" />
+ </module>
<module name="NoWhitespaceBefore" />
<module name="GenericWhitespace"/>
<module name="OperatorWrap" />
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/ClientAuthenticationManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/ClientAuthenticationManager.java b/sshd-core/src/main/java/org/apache/sshd/client/ClientAuthenticationManager.java
index c495c68..a9ae68c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/ClientAuthenticationManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/ClientAuthenticationManager.java
@@ -77,6 +77,7 @@ public interface ClientAuthenticationManager extends KeyPairProviderHolder {
* (i.e., no passwords available)
*/
PasswordIdentityProvider getPasswordIdentityProvider();
+
void setPasswordIdentityProvider(PasswordIdentityProvider provider);
/**
@@ -116,6 +117,7 @@ public interface ClientAuthenticationManager extends KeyPairProviderHolder {
* @return the {@link ServerKeyVerifier} to use - never {@code null}
*/
ServerKeyVerifier getServerKeyVerifier();
+
void setServerKeyVerifier(ServerKeyVerifier serverKeyVerifier);
/**
@@ -123,6 +125,7 @@ public interface ClientAuthenticationManager extends KeyPairProviderHolder {
* (may be {@code null} to indicate that no such communication is allowed)
*/
UserInteraction getUserInteraction();
+
void setUserInteraction(UserInteraction userInteraction);
/**
@@ -130,20 +133,25 @@ public interface ClientAuthenticationManager extends KeyPairProviderHolder {
* {@code null}/empty
*/
List<NamedFactory<UserAuth>> getUserAuthFactories();
+
default String getUserAuthFactoriesNameList() {
return NamedResource.getNames(getUserAuthFactories());
}
+
default List<String> getUserAuthFactoriesNames() {
return NamedResource.getNameList(getUserAuthFactories());
}
void setUserAuthFactories(List<NamedFactory<UserAuth>> userAuthFactories);
+
default void setUserAuthFactoriesNameList(String names) {
setUserAuthFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setUserAuthFactoriesNames(String... names) {
setUserAuthFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setUserAuthFactoriesNames(Collection<String> names) {
BuiltinUserAuthFactories.ParseResult result = BuiltinUserAuthFactories.parseFactoriesList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
index 7d4a07b..31b2a22 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
@@ -83,6 +83,7 @@ public interface ClientFactoryManager
* effective session parameters - never {@code null}
*/
HostConfigEntryResolver getHostConfigEntryResolver();
+
void setHostConfigEntryResolver(HostConfigEntryResolver resolver);
/**
@@ -90,6 +91,7 @@ public interface ClientFactoryManager
* key pair identities - never {@code null}
*/
ClientIdentityLoader getClientIdentityLoader();
+
void setClientIdentityLoader(ClientIdentityLoader loader);
/**
@@ -98,5 +100,6 @@ public interface ClientFactoryManager
* @see FilePasswordProvider#EMPTY
*/
FilePasswordProvider getFilePasswordProvider();
+
void setFilePasswordProvider(FilePasswordProvider provider);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
index 11c26a4..a1f9d18 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
@@ -75,6 +75,7 @@ public abstract class AbstractUserAuth extends AbstractLoggingBean implements Us
}
protected abstract boolean sendAuthDataRequest(ClientSession session, String service) throws Exception;
+
protected abstract boolean processAuthDataRequest(ClientSession session, String service, Buffer buffer) throws Exception;
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/session/ClientProxyConnectorHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientProxyConnectorHolder.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientProxyConnectorHolder.java
index ea98499..6de3bc3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientProxyConnectorHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientProxyConnectorHolder.java
@@ -24,5 +24,6 @@ package org.apache.sshd.client.session;
*/
public interface ClientProxyConnectorHolder {
ClientProxyConnector getClientProxyConnector();
+
void setClientProxyConnector(ClientProxyConnector proxyConnector);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java b/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java
index 475c9d4..a5420c7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java
@@ -141,6 +141,7 @@ public abstract class AbstractSimpleClient extends AbstractLoggingBean implement
return result;
});
}
+
@Override
public CloseableScpClient scpLogin(String host, String username, String password) throws IOException {
return scpLogin(host, DEFAULT_PORT, username, password);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
index 35400ae..8a72a3f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
@@ -32,6 +32,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.NavigableMap;
import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
@@ -64,8 +65,8 @@ public class DefaultSftpClient extends AbstractSftpClient {
private final byte[] workBuf = new byte[Integer.BYTES];
private final AtomicInteger versionHolder = new AtomicInteger(0);
private final AtomicBoolean closing = new AtomicBoolean(false);
- private final Map<String, byte[]> extensions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- private final Map<String, byte[]> exposedExtensions = Collections.unmodifiableMap(extensions);
+ private final NavigableMap<String, byte[]> extensions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ private final NavigableMap<String, byte[]> exposedExtensions = Collections.unmodifiableNavigableMap(extensions);
public DefaultSftpClient(ClientSession clientSession) throws IOException {
this.clientSession = Objects.requireNonNull(clientSession, "No client session");
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpClient.java
index eb22451..410fa22 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpClient.java
@@ -34,6 +34,7 @@ import java.util.Comparator;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
+import java.util.NavigableMap;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -537,10 +538,12 @@ public interface SftpClient extends SubsystemClient {
default String getName() {
return SftpConstants.SFTP_SUBSYSTEM_NAME;
}
+
/**
- * @return An (unmodifiable) {@link Map} of the reported server extensions.
+ * @return An (unmodifiable) {@link NavigableMap} of the reported server extensions.
+ * where key=extension name (case <U>insensitive</U>)
*/
- Map<String, byte[]> getServerExtensions();
+ NavigableMap<String, byte[]> getServerExtensions();
boolean isClosing();
@@ -835,6 +838,7 @@ public interface SftpClient extends SubsystemClient {
// see SSH_FXP_BLOCK / SSH_FXP_UNBLOCK for byte range locks
void lock(Handle handle, long offset, long length, int mask) throws IOException;
+
void unlock(Handle handle, long offset, long length) throws IOException;
//
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpFileSystem.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpFileSystem.java b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpFileSystem.java
index d006d26..cd41691 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpFileSystem.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/SftpFileSystem.java
@@ -30,7 +30,7 @@ import java.nio.file.attribute.UserPrincipalLookupService;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
+import java.util.NavigableMap;
import java.util.Objects;
import java.util.Queue;
import java.util.Set;
@@ -236,7 +236,7 @@ public class SftpFileSystem extends BaseFileSystem<SftpPath> implements ClientSe
}
@Override
- public Map<String, byte[]> getServerExtensions() {
+ public NavigableMap<String, byte[]> getServerExtensions() {
return delegate.getServerExtensions();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/PropertyResolverUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/PropertyResolverUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/PropertyResolverUtils.java
index 78ebea6..6677685 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/PropertyResolverUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/PropertyResolverUtils.java
@@ -196,6 +196,7 @@ public final class PropertyResolverUtils {
throw new IllegalArgumentException("Bad value type for enum conversion: " + value.getClass().getSimpleName());
}
}
+
public static Object updateProperty(PropertyResolver resolver, String name, long value) {
return updateProperty(resolver.getProperties(), name, value);
}
@@ -306,6 +307,7 @@ public final class PropertyResolverUtils {
return value;
}
}
+
public static String getStringProperty(Map<String, ?> props, String name, String defaultValue) {
Object value = resolvePropertyValue(props, name);
if (value == null) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/channel/Channel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/Channel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/Channel.java
index 2061d26..9aa0b0f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/Channel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/Channel.java
@@ -73,11 +73,13 @@ public interface Channel
List<RequestHandler<Channel>> getRequestHandlers();
void addRequestHandler(RequestHandler<Channel> handler);
+
default void addRequestHandlers(Collection<? extends RequestHandler<Channel>> handlers) {
GenericUtils.forEach(handlers, this::addRequestHandler);
}
void removeRequestHandler(RequestHandler<Channel> handler);
+
default void removeRequestHandlers(Collection<? extends RequestHandler<Channel>> handlers) {
GenericUtils.forEach(handlers, this::removeRequestHandler);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/PrivateKeyEncryptionContext.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/PrivateKeyEncryptionContext.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/PrivateKeyEncryptionContext.java
index b935460..9d5eedc 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/PrivateKeyEncryptionContext.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/PrivateKeyEncryptionContext.java
@@ -23,7 +23,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
+import java.util.NavigableMap;
import java.util.Objects;
import java.util.SortedSet;
import java.util.TreeMap;
@@ -37,7 +37,7 @@ import org.apache.sshd.common.util.ValidateUtils;
public class PrivateKeyEncryptionContext implements Cloneable {
public static final String DEFAULT_CIPHER_MODE = "CBC";
- private static final Map<String, PrivateKeyObfuscator> OBFUSCATORS =
+ private static final NavigableMap<String, PrivateKeyObfuscator> OBFUSCATORS =
new TreeMap<String, PrivateKeyObfuscator>(String.CASE_INSENSITIVE_ORDER) {
private static final long serialVersionUID = 1L; // no serialization expected
@@ -211,6 +211,7 @@ public class PrivateKeyEncryptionContext implements Cloneable {
throw new RuntimeException("Failed to clone: " + toString());
}
}
+
@Override
public int hashCode() {
return GenericUtils.hashCode(getCipherName(), Boolean.TRUE)
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/pem/AbstractPEMResourceKeyPairParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/pem/AbstractPEMResourceKeyPairParser.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/pem/AbstractPEMResourceKeyPairParser.java
index 8c8d082..bee13d6 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/pem/AbstractPEMResourceKeyPairParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/loader/pem/AbstractPEMResourceKeyPairParser.java
@@ -134,7 +134,6 @@ public abstract class AbstractPEMResourceKeyPairParser
throw new FailedLoginException("No password data for encrypted resource=" + resourceKey);
}
-
PrivateKeyEncryptionContext encContext = new PrivateKeyEncryptionContext(algInfo);
encContext.setPassword(password);
encContext.setInitVector(initVector);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java b/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
index baa64ee..a5ef6f9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/digest/BaseDigest.java
@@ -104,7 +104,6 @@ public class BaseDigest implements Digest {
return h;
}
-
@Override
public int compareTo(Digest that) {
if (that == null) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
index 64f37db..b2403dd 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
@@ -789,7 +789,6 @@ public class DefaultForwardingFilter
err = GenericUtils.accumulateException(err, e);
}
-
if (err != null) {
throw err;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/forward/ForwardingFilter.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/ForwardingFilter.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/ForwardingFilter.java
index 5c3583b..bb66562 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/ForwardingFilter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/ForwardingFilter.java
@@ -18,7 +18,6 @@
*/
package org.apache.sshd.common.forward;
-
import java.io.IOException;
import org.apache.sshd.common.Closeable;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/forward/PortForwardingEventListenerManagerHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/PortForwardingEventListenerManagerHolder.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/PortForwardingEventListenerManagerHolder.java
index 71a607b..dadcf85 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/PortForwardingEventListenerManagerHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/PortForwardingEventListenerManagerHolder.java
@@ -34,5 +34,6 @@ public interface PortForwardingEventListenerManagerHolder {
Collection<PortForwardingEventListenerManager> getRegisteredManagers();
boolean addPortForwardingEventListenerManager(PortForwardingEventListenerManager manager);
+
boolean removePortForwardingEventListenerManager(PortForwardingEventListenerManager manager);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
index 1f73590..673114e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
@@ -63,15 +63,14 @@ public class TcpipClientChannel extends AbstractClientChannel {
this.remote = remote;
}
-
public OpenFuture getOpenFuture() {
return openFuture;
}
@Override
public synchronized OpenFuture open() throws IOException {
- final InetSocketAddress src;
- final InetSocketAddress dst;
+ InetSocketAddress src;
+ InetSocketAddress dst;
switch (typeEnum) {
case Direct:
src = (InetSocketAddress) serverSession.getRemoteAddress();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
index cb34411..db380c2 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
@@ -46,7 +46,7 @@ public class DefaultSshFuture<T extends SshFuture> extends AbstractSshFuture<T>
* then synchronization occurs on {@code this} instance
*/
public DefaultSshFuture(Object lock) {
- this.lock = lock != null ? lock : this;
+ this.lock = (lock != null) ? lock : this;
}
@Override
@@ -159,6 +159,7 @@ public class DefaultSshFuture<T extends SshFuture> extends AbstractSshFuture<T>
if (notifyNow) {
notifyListener(listener);
}
+
return asT();
}
@@ -220,4 +221,9 @@ public class DefaultSshFuture<T extends SshFuture> extends AbstractSshFuture<T>
public void cancel() {
setValue(CANCELED);
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "[value=" + result + "]";
+ }
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
index 898b5c5..7aa8cba 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexFactoryManager.java
@@ -48,6 +48,7 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto
* @return a list of named <code>KeyExchange</code> factories, never {@code null}
*/
List<NamedFactory<KeyExchange>> getKeyExchangeFactories();
+
void setKeyExchangeFactories(List<NamedFactory<KeyExchange>> keyExchangeFactories);
/**
@@ -56,20 +57,25 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto
* @return a list of named <code>Cipher</code> factories, never {@code null}
*/
List<NamedFactory<Cipher>> getCipherFactories();
+
default String getCipherFactoriesNameList() {
return NamedResource.getNames(getCipherFactories());
}
+
default List<String> getCipherFactoriesNames() {
return NamedResource.getNameList(getCipherFactories());
}
void setCipherFactories(List<NamedFactory<Cipher>> cipherFactories);
+
default void setCipherFactoriesNameList(String names) {
setCipherFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setCipherFactoriesNames(String... names) {
setCipherFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setCipherFactoriesNames(Collection<String> names) {
BuiltinCiphers.ParseResult result = BuiltinCiphers.parseCiphersList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -86,20 +92,25 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto
* @return a list of named <code>Compression</code> factories, never {@code null}
*/
List<NamedFactory<Compression>> getCompressionFactories();
+
default String getCompressionFactoriesNameList() {
return NamedResource.getNames(getCompressionFactories());
}
+
default List<String> getCompressionFactoriesNames() {
return NamedResource.getNameList(getCompressionFactories());
}
void setCompressionFactories(List<NamedFactory<Compression>> compressionFactories);
+
default void setCompressionFactoriesNameList(String names) {
setCompressionFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setCompressionFactoriesNames(String... names) {
setCompressionFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setCompressionFactoriesNames(Collection<String> names) {
BuiltinCompressions.ParseResult result = BuiltinCompressions.parseCompressionsList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -116,20 +127,25 @@ public interface KexFactoryManager extends KeyPairProviderHolder, SignatureFacto
* @return a list of named <code>Mac</code> factories, never {@code null}
*/
List<NamedFactory<Mac>> getMacFactories();
+
default String getMacFactoriesNameList() {
return NamedResource.getNames(getMacFactories());
}
+
default List<String> getMacFactoriesNames() {
return NamedResource.getNameList(getMacFactories());
}
void setMacFactories(List<NamedFactory<Mac>> macFactories);
+
default void setMacFactoriesNameList(String names) {
setMacFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setMacFactoriesNames(String... names) {
setMacFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setMacFactoriesNames(Collection<String> names) {
BuiltinMacs.ParseResult result = BuiltinMacs.parseMacsList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProviderHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProviderHolder.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProviderHolder.java
index b5826f6..553d553 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProviderHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProviderHolder.java
@@ -30,5 +30,6 @@ public interface KeyPairProviderHolder {
* @return the <code>KeyPairProvider</code>, never {@code null}
*/
KeyPairProvider getKeyPairProvider();
+
void setKeyPairProvider(KeyPairProvider keyPairProvider);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
index 6631832..9918e02 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
@@ -741,7 +741,6 @@ public class ScpHelper extends AbstractLoggingBean implements SessionHolder<Sess
out.write("E\n".getBytes(StandardCharsets.UTF_8));
out.flush();
-
readyCode = readAck(false);
if (log.isDebugEnabled()) {
log.debug("sendDir({})[{}] 'E' command reply code=", this, path, readyCode);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
index 7c4aa22..823f800 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/ConnectionService.java
@@ -64,5 +64,6 @@ public interface ConnectionService extends Service, PortForwardingEventListenerM
X11ForwardSupport getX11ForwardSupport();
boolean isAllowMoreSessions();
+
void setAllowMoreSessions(boolean allow);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/session/Session.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/Session.java b/sshd-core/src/main/java/org/apache/sshd/common/session/Session.java
index 6e00e26..6216188 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/Session.java
@@ -287,6 +287,7 @@ public interface Session
long getIdleTimeout();
boolean isAuthenticated();
+
void setAuthenticated() throws IOException;
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactoriesManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactoriesManager.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactoriesManager.java
index 3b2d712..c9d876a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactoriesManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactoriesManager.java
@@ -39,20 +39,25 @@ public interface SignatureFactoriesManager {
* @return The list of named <code>Signature</code> factories
*/
List<NamedFactory<Signature>> getSignatureFactories();
+
default String getSignatureFactoriesNameList() {
return NamedResource.getNames(getSignatureFactories());
}
+
default List<String> getSignatureFactoriesNames() {
return NamedResource.getNameList(getSignatureFactories());
}
void setSignatureFactories(List<NamedFactory<Signature>> factories);
+
default void setSignatureFactoriesNameList(String names) {
setSignatureFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setSignatureFactoriesNames(String... names) {
setSignatureFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setSignatureFactoriesNames(Collection<String> names) {
BuiltinSignatures.ParseResult result = BuiltinSignatures.parseSignatureList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpHelper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpHelper.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpHelper.java
index ead2764..7b06e11 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpHelper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpHelper.java
@@ -121,7 +121,6 @@ public final class SftpHelper {
}
});
-
private SftpHelper() {
throw new UnsupportedOperationException("No instance allowed");
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
index 6bf6d20..99a0768 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
@@ -416,6 +416,7 @@ public final class GenericUtils {
return false;
}
+
public static <T> void forEach(Iterable<T> values, Consumer<T> consumer) {
if (isNotEmpty(values)) {
values.forEach(consumer);
@@ -842,6 +843,7 @@ public final class GenericUtils {
public boolean hasNext() {
return iterator.hasNext();
}
+
@Override
public V next() {
return mapper.apply(iterator.next());
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/common/util/io/der/DERWriter.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/io/der/DERWriter.java b/sshd-core/src/main/java/org/apache/sshd/common/util/io/der/DERWriter.java
index a001e0e..bc603ee 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/io/der/DERWriter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/io/der/DERWriter.java
@@ -118,7 +118,6 @@ public class DERWriter extends FilterOutputStream {
return (b & 0x80) == 0;
}
-
public void writeObject(ASN1Object obj) throws IOException {
Objects.requireNonNull(obj, "No ASN.1 object");
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/server/ServerAuthenticationManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/ServerAuthenticationManager.java b/sshd-core/src/main/java/org/apache/sshd/server/ServerAuthenticationManager.java
index 87e7fcd..1d3a96d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/ServerAuthenticationManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/ServerAuthenticationManager.java
@@ -157,20 +157,25 @@ public interface ServerAuthenticationManager {
* @return a list of named <code>UserAuth</code> factories, never {@code null}/empty
*/
List<NamedFactory<UserAuth>> getUserAuthFactories();
+
default String getUserAuthFactoriesNameList() {
return NamedResource.getNames(getUserAuthFactories());
}
+
default List<String> getUserAuthFactoriesNames() {
return NamedResource.getNameList(getUserAuthFactories());
}
void setUserAuthFactories(List<NamedFactory<UserAuth>> userAuthFactories);
+
default void setUserAuthFactoriesNameList(String names) {
setUserAuthFactoriesNames(GenericUtils.split(names, ','));
}
+
default void setUserAuthFactoriesNames(String... names) {
setUserAuthFactoriesNames(GenericUtils.isEmpty((Object[]) names) ? Collections.emptyList() : Arrays.asList(names));
}
+
default void setUserAuthFactoriesNames(Collection<String> names) {
BuiltinUserAuthFactories.ParseResult result = BuiltinUserAuthFactories.parseFactoriesList(names);
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -190,6 +195,7 @@ public interface ServerAuthenticationManager {
* @return the {@link PublickeyAuthenticator} or {@code null}
*/
PublickeyAuthenticator getPublickeyAuthenticator();
+
void setPasswordAuthenticator(PasswordAuthenticator passwordAuthenticator);
/**
@@ -201,6 +207,7 @@ public interface ServerAuthenticationManager {
* @return the {@link PasswordAuthenticator} or {@code null}
*/
PasswordAuthenticator getPasswordAuthenticator();
+
void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator);
/**
@@ -212,6 +219,7 @@ public interface ServerAuthenticationManager {
* @return The {@link KeyboardInteractiveAuthenticator} or {@code null}
*/
KeyboardInteractiveAuthenticator getKeyboardInteractiveAuthenticator();
+
void setKeyboardInteractiveAuthenticator(KeyboardInteractiveAuthenticator interactiveAuthenticator);
/**
@@ -223,6 +231,7 @@ public interface ServerAuthenticationManager {
* @return the {@link GSSAuthenticator} or {@code null}
*/
GSSAuthenticator getGSSAuthenticator();
+
void setGSSAuthenticator(GSSAuthenticator gssAuthenticator);
/**
@@ -233,6 +242,7 @@ public interface ServerAuthenticationManager {
* @return the {@link HostBasedAuthenticator} or {@code null}
*/
HostBasedAuthenticator getHostBasedAuthenticator();
+
void setHostBasedAuthenticator(HostBasedAuthenticator hostBasedAuthenticator);
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/server/kex/DHGEXServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/kex/DHGEXServer.java b/sshd-core/src/main/java/org/apache/sshd/server/kex/DHGEXServer.java
index d6fed30..39e93ca 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/kex/DHGEXServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/kex/DHGEXServer.java
@@ -171,7 +171,6 @@ public class DHGEXServer extends AbstractDHServerKeyExchange {
dh.setF(e);
k = dh.getK();
-
byte[] k_s;
KeyPair kp = Objects.requireNonNull(session.getHostKey(), "No server key pair available");
String algo = session.getNegotiatedKexParameter(KexProposalOption.SERVERKEYS);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/server/session/ServerProxyAcceptorHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerProxyAcceptorHolder.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerProxyAcceptorHolder.java
index ec519f5..ef7cf8d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerProxyAcceptorHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerProxyAcceptorHolder.java
@@ -24,5 +24,6 @@ package org.apache.sshd.server.session;
*/
public interface ServerProxyAcceptorHolder {
ServerProxyAcceptor getServerProxyAcceptor();
+
void setServerProxyAcceptor(ServerProxyAcceptor proxyAcceptor);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java b/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
index 9289458..11508b3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpEventListenerManager.java
@@ -44,7 +44,6 @@ public abstract class AbstractSftpEventListenerManager implements SftpEventListe
return sftpEventListenerProxy;
}
-
@Override
public boolean addSftpEventListener(SftpEventListener listener) {
return sftpEventListeners.add(SftpEventListener.validateListener(listener));
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpFileSystemAccessorManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpFileSystemAccessorManager.java b/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpFileSystemAccessorManager.java
index 9619794..616f9ce 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpFileSystemAccessorManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpFileSystemAccessorManager.java
@@ -24,5 +24,6 @@ package org.apache.sshd.server.subsystem.sftp;
*/
public interface SftpFileSystemAccessorManager {
SftpFileSystemAccessor getFileSystemAccessor();
+
void setFileSystemAccessor(SftpFileSystemAccessor accessor);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
index 3eeb6d4..05a32da 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
@@ -309,6 +309,7 @@ public class HostConfigEntryTest extends BaseTestSupport {
assertNotNull("Missing resource " + resourceName, url);
return HostConfigEntry.readHostConfigEntries(url);
}
+
private static void testCaseInsensitivePatternMatching(String value, Pattern pattern, boolean expected) {
for (int index = 0; index < value.length(); index++) {
boolean actual = HostPatternsHolder.isHostMatch(value, pattern);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
index 5509799..9fe1aff 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
@@ -79,7 +79,6 @@ public class KexTest extends BaseTestSupport {
return parameterize(BuiltinDHFactories.VALUES);
}
-
@BeforeClass
public static void setupClientAndServer() throws Exception {
sshd = Utils.setupTestServer(KexTest.class);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/common/channel/ChannelPipedOutputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/channel/ChannelPipedOutputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/common/channel/ChannelPipedOutputStreamTest.java
index e8d3df8..eb2d61f 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/channel/ChannelPipedOutputStreamTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/channel/ChannelPipedOutputStreamTest.java
@@ -43,19 +43,19 @@ public class ChannelPipedOutputStreamTest extends BaseTestSupport {
@Test
public void testNioChannelImplementation() throws IOException {
ChannelPipedSink sink = Mockito.mock(ChannelPipedSink.class);
- final AtomicBoolean eofCalled = new AtomicBoolean(false);
+ AtomicBoolean eofCalled = new AtomicBoolean(false);
Mockito.doAnswer(invocation -> {
assertFalse("Multiple EOF calls", eofCalled.getAndSet(true));
return null;
}).when(sink).eof();
-
- final AtomicInteger receiveCount = new AtomicInteger(0);
+ AtomicInteger receiveCount = new AtomicInteger(0);
Mockito.doAnswer(invocation -> {
Number len = invocation.getArgumentAt(2, Number.class);
receiveCount.addAndGet(len.intValue());
return null;
}).when(sink).receive(Matchers.any(byte[].class), Matchers.anyInt(), Matchers.anyInt());
+
try (ChannelPipedOutputStream stream = new ChannelPipedOutputStream(sink)) {
assertTrue("Stream not marked as initially open", stream.isOpen());
assertEquals("Unexpected initial receive count", 0, receiveCount.intValue());
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/common/file/root/RootedFileSystemProviderTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/file/root/RootedFileSystemProviderTest.java b/sshd-core/src/test/java/org/apache/sshd/common/file/root/RootedFileSystemProviderTest.java
index 410e1f6..e63db36 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/file/root/RootedFileSystemProviderTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/file/root/RootedFileSystemProviderTest.java
@@ -214,6 +214,7 @@ public class RootedFileSystemProviderTest extends AssertableFile {
Path link = FileHelper.createLink(fileSystem.getPath("../" + getCurrentTestName() + "link"), existing);
fail(String.format("Unexpected success in linking file %s", link.toString()));
}
+
@Test
public void testNewByteChannelProviderMismatchException() throws IOException {
RootedFileSystemProvider provider = new RootedFileSystemProvider();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
index e92a5c5..5e24eb5 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
@@ -111,7 +111,6 @@ public class MacTest extends BaseTestSupport {
return ret;
}
-
@BeforeClass
public static void setupClientAndServer() throws Exception {
JSchLogger.init();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
index bc5b2b2..35f032b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
@@ -121,7 +121,6 @@ public class WelcomeBannerPhaseTest extends BaseTestSupport {
}
});
-
try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) {
session.addPasswordIdentity(getCurrentTestName());
session.auth().verify(5L, TimeUnit.SECONDS);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/55ca8818/sshd-core/src/test/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticatorTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticatorTest.java b/sshd-core/src/test/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticatorTest.java
index a37ab85..d147f2d 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticatorTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticatorTest.java
@@ -86,9 +86,7 @@ public class JaasPasswordAuthenticatorTest extends BaseTestSupport {
assertFalse(auth.authenticate("sshd", "dummy"));
}
-
protected static class DummyLoginModule implements LoginModule {
-
private Subject subject;
private CallbackHandler callbackHandler;
[2/3] mina-sshd git commit: [SSHD-776] SSHD local port forwarding
close session unexpectedly
Posted by lg...@apache.org.
[SSHD-776] SSHD local port forwarding close session unexpectedly
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/0e99597a
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/0e99597a
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/0e99597a
Branch: refs/heads/master
Commit: 0e99597aceb035d271f0140348df23d32b5e3bcd
Parents: 2529a4c
Author: Fulvio Cavarretta <fu...@primeur.com>
Authored: Wed Oct 11 18:21:11 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Wed Oct 11 20:35:15 2017 +0300
----------------------------------------------------------------------
.../sshd/common/channel/AbstractChannel.java | 1 +
.../apache/sshd/common/io/nio2/Nio2Session.java | 66 ++++++++++++--------
.../helpers/AbstractConnectionService.java | 15 ++++-
.../sshd/server/forward/TcpipServerChannel.java | 63 ++++++++++---------
4 files changed, 89 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/0e99597a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
index 2a6c0e9..e1eebef 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -776,6 +776,7 @@ public abstract class AbstractChannel
throw err;
}
}
+
@Override
protected void doCloseImmediately() {
if (service != null) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/0e99597a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
index 0401224..a846562 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
@@ -133,11 +133,11 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
@Override
public IoWriteFuture writePacket(Buffer buffer) throws IOException {
if (log.isDebugEnabled()) {
- log.debug("Writing {} bytes", buffer.available());
+ log.debug("writePacket({}) Writing {} bytes", this, buffer.available());
}
ByteBuffer buf = ByteBuffer.wrap(buffer.array(), buffer.rpos(), buffer.available());
- final Nio2DefaultIoWriteFuture future = new Nio2DefaultIoWriteFuture(null, buf);
+ Nio2DefaultIoWriteFuture future = new Nio2DefaultIoWriteFuture(null, buf);
if (isClosing()) {
Throwable exc = new ClosedChannelException();
future.setException(exc);
@@ -150,32 +150,33 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
}
protected void exceptionCaught(Throwable exc) {
- if (!closeFuture.isClosed()) {
- AsynchronousSocketChannel socket = getSocket();
- if (isClosing() || !socket.isOpen()) {
- close(true);
- } else {
- IoHandler handler = getIoHandler();
- try {
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) caught {}[{}] - calling handler",
- this, exc.getClass().getSimpleName(), exc.getMessage());
- }
- handler.exceptionCaught(this, exc);
- } catch (Throwable e) {
- Throwable t = GenericUtils.peelException(e);
- if (log.isDebugEnabled()) {
- log.debug("exceptionCaught({}) Exception handler threw {}, closing the session: {}",
- this, t.getClass().getSimpleName(), t.getMessage());
- }
+ if (closeFuture.isClosed()) {
+ return;
+ }
- if (log.isTraceEnabled()) {
- log.trace("exceptionCaught(" + this + ") exception handler failure details", t);
- }
- close(true);
+ AsynchronousSocketChannel socket = getSocket();
+ if (isOpen() && socket.isOpen()) {
+ IoHandler handler = getIoHandler();
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("exceptionCaught({}) caught {}[{}] - calling handler",
+ this, exc.getClass().getSimpleName(), exc.getMessage());
+ }
+ handler.exceptionCaught(this, exc);
+ } catch (Throwable e) {
+ Throwable t = GenericUtils.peelException(e);
+ if (log.isDebugEnabled()) {
+ log.debug("exceptionCaught({}) Exception handler threw {}, closing the session: {}",
+ this, t.getClass().getSimpleName(), t.getMessage());
+ }
+
+ if (log.isTraceEnabled()) {
+ log.trace("exceptionCaught(" + this + ") exception handler failure details", t);
}
}
}
+
+ close(true);
}
@Override
@@ -193,12 +194,22 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
@Override
protected void doCloseImmediately() {
- for (;;) {
+ for (boolean debugEnabled = log.isDebugEnabled();;) {
// Cancel pending requests informing them of the cancellation
Nio2DefaultIoWriteFuture future = writes.poll();
if (future != null) {
+ if (future.isWritten()) {
+ if (debugEnabled) {
+ log.debug("doCloseImmediately({}) skip already written future={}", this, future);
+ }
+ continue;
+ }
+
Throwable error = future.getException();
if (error == null) {
+ if (debugEnabled) {
+ log.debug("doCloseImmediately({}) signal write abort for future={}", this, future);
+ }
future.setException(new WriteAbortedException("Write request aborted due to immediate session close", null));
}
} else {
@@ -379,6 +390,11 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
if (log.isDebugEnabled()) {
log.debug("handleCompletedWriteCycle({}) finished writing len={}", this, writeLen);
}
+
+ // This should be called before future.setWritten() to avoid WriteAbortedException
+ // to be thrown by doCloseImmediately when called in the listener of doCloseGracefully
+ writes.remove(future);
+
future.setWritten();
finishWrite(future);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/0e99597a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
index 1524196..14db9b1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
@@ -307,7 +307,8 @@ public abstract class AbstractConnectionService<S extends AbstractSession>
*/
@Override
public void unregisterChannel(Channel channel) {
- Channel result = channels.remove(channel.getId());
+ int channelId = channel.getId();
+ Channel result = channels.remove(channelId);
if (log.isDebugEnabled()) {
log.debug("unregisterChannel({}) result={}", channel, result);
}
@@ -436,8 +437,16 @@ public abstract class AbstractConnectionService<S extends AbstractSession>
*/
public void channelWindowAdjust(Buffer buffer) throws IOException {
try {
- Channel channel = getChannel(buffer);
- channel.handleWindowAdjust(buffer);
+ // Do not use getChannel to avoid the session being closed
+ // if receiving the SSH_MSG_CHANNEL_WINDOW_ADJUST on an already closed channel
+ int recipient = buffer.getInt();
+ Channel channel = channels.get(recipient);
+ if (channel != null) {
+ channel.handleWindowAdjust(buffer);
+ } else {
+ log.warn("Received SSH_MSG_CHANNEL_WINDOW_ADJUST on unknown channel " + recipient);
+ }
+
} catch (SshException e) {
if (log.isDebugEnabled()) {
log.debug("channelWindowAdjust {} error: {}", e.getClass().getSimpleName(), e.getMessage());
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/0e99597a/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java b/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
index 57a5699..317e669 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
@@ -232,7 +232,7 @@ public class TcpipServerChannel extends AbstractServerChannel {
protected void handleChannelOpenFailure(OpenFuture f, Throwable problem) {
signalChannelOpenFailure(problem);
notifyStateChanged(problem.getClass().getSimpleName());
- closeImmediately0();
+ close(true);
if (problem instanceof ConnectException) {
f.setException(new SshChannelOpenException(getId(), SshConstants.SSH_OPEN_CONNECT_FAILED, problem.getMessage(), problem));
@@ -241,44 +241,43 @@ public class TcpipServerChannel extends AbstractServerChannel {
}
}
- private void closeImmediately0() {
- // We need to close the channel immediately to remove it from the
- // server session's channel table and *not* send a packet to the
- // client. A notification was already sent by our caller, or will
- // be sent after we return.
- //
- super.close(true);
+
+ @Override
+ public CloseFuture close(boolean immediately) {
+ CloseFuture closingFeature = super.close(immediately);
// We also need to dispose of the connector, but unfortunately we
// are being invoked by the connector thread or the connector's
- // own processor thread. Disposing of the connector within either
- // causes deadlock. Instead create a thread to dispose of the
+ // own processor thread. Disposing of the connector within either
+ // causes deadlock. Instead create a thread to dispose of the
// connector in the background.
-
ExecutorService service = getExecutorService();
+
// allocate a temporary executor service if none provided
- final ExecutorService executors = (service == null)
+ ExecutorService executors = (service == null)
? ThreadUtils.newSingleThreadExecutor("TcpIpServerChannel-ConnectorCleanup[" + getSession() + "]")
: service;
// shutdown the temporary executor service if had to create it
- final boolean shutdown = executors != service || isShutdownOnExit();
- executors.submit(() -> {
- try {
- connector.close(true);
- } finally {
- if (shutdown && !executors.isShutdown()) {
- Collection<Runnable> runners = executors.shutdownNow();
+ boolean shutdown = (executors != service) || isShutdownOnExit();
+
+ return builder().when(closingFeature).run(() -> {
+ executors.submit(() -> {
+ try {
if (log.isDebugEnabled()) {
- log.debug("destroy({}) - shutdown executor service - runners count={}", TcpipServerChannel.this, runners.size());
+ log.debug("disposing connector: {} for: {}", connector, TcpipServerChannel.this);
+ }
+ connector.close(immediately);
+ } finally {
+ if (shutdown && (!executors.isShutdown())) {
+ Collection<Runnable> runners = executors.shutdownNow();
+ if (log.isDebugEnabled()) {
+ log.debug("destroy({}) - shutdown executor service - runners count={}",
+ TcpipServerChannel.this, runners.size());
+ }
}
}
- }
- });
- }
-
- @Override
- public CloseFuture close(boolean immediately) {
- return super.close(immediately).addListener(sshFuture -> closeImmediately0());
+ });
+ }).build().close(false);
}
@Override
@@ -328,6 +327,14 @@ public class TcpipServerChannel extends AbstractServerChannel {
+ " len=" + len + " write failure details", t);
}
- session.exceptionCaught(t);
+ if (ioSession.isOpen()) {
+ session.exceptionCaught(t);
+ } else {
+ // In case remote entity has closed the socket (the ioSession), data coming from
+ // the SSH channel should be simply discarded
+ if (log.isDebugEnabled()) {
+ log.debug("Ignoring writeDataFailure {} because ioSession {} is already closing ", t, ioSession);
+ }
+ }
}
}
[3/3] mina-sshd git commit: Added identifier value to Future(s) for
improved logging
Posted by lg...@apache.org.
Added identifier value to Future(s) for improved logging
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/693fa5d9
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/693fa5d9
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/693fa5d9
Branch: refs/heads/master
Commit: 693fa5d90f54676de6655954046a8a4f5d09728a
Parents: 55ca881
Author: Lyor Goldstein <ly...@gmail.com>
Authored: Wed Oct 11 20:34:21 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Wed Oct 11 20:35:16 2017 +0300
----------------------------------------------------------------------
.../throttle/ThrottlingPacketWriterTest.java | 2 +-
.../agent/local/ChannelAgentForwarding.java | 2 +-
.../sshd/agent/unix/ChannelAgentForwarding.java | 2 +-
.../java/org/apache/sshd/client/SshClient.java | 29 ++++-----
.../client/channel/AbstractClientChannel.java | 4 +-
.../sshd/client/channel/ChannelDirectTcpip.java | 2 +-
.../sshd/client/future/DefaultAuthFuture.java | 4 +-
.../client/future/DefaultConnectFuture.java | 4 +-
.../sshd/client/future/DefaultOpenFuture.java | 4 +-
.../client/session/AbstractClientSession.java | 2 +-
.../client/session/ClientConnectionService.java | 4 +-
.../sshd/client/session/ClientSessionImpl.java | 2 +-
.../client/session/ClientUserAuthService.java | 2 +-
.../subsystem/sftp/DefaultSftpClient.java | 2 +-
.../sshd/common/channel/AbstractChannel.java | 9 +--
.../common/channel/BufferedIoOutputStream.java | 66 +++++++++++---------
.../common/channel/ChannelAsyncInputStream.java | 8 ++-
.../channel/ChannelAsyncOutputStream.java | 7 ++-
.../sshd/common/channel/IoWriteFutureImpl.java | 4 +-
.../common/forward/DefaultForwardingFilter.java | 2 +-
.../sshd/common/forward/TcpipClientChannel.java | 4 +-
.../sshd/common/future/AbstractSshFuture.java | 19 +++++-
.../sshd/common/future/DefaultCloseFuture.java | 5 +-
.../common/future/DefaultKeyExchangeFuture.java | 4 +-
.../sshd/common/future/DefaultSshFuture.java | 7 ++-
.../future/DefaultVerifiableSshFuture.java | 4 +-
.../sshd/common/future/WaitableFuture.java | 4 ++
.../sshd/common/io/AbstractIoWriteFuture.java | 4 +-
.../sshd/common/io/mina/MinaConnector.java | 2 +-
.../apache/sshd/common/io/mina/MinaSession.java | 12 ++--
.../sshd/common/io/nio2/Nio2Connector.java | 6 +-
.../io/nio2/Nio2DefaultIoWriteFuture.java | 4 +-
.../apache/sshd/common/io/nio2/Nio2Service.java | 2 +-
.../apache/sshd/common/io/nio2/Nio2Session.java | 5 +-
.../helpers/AbstractConnectionService.java | 4 +-
.../common/session/helpers/AbstractSession.java | 9 +--
.../session/helpers/PendingWriteFuture.java | 4 +-
.../util/closeable/AbstractCloseable.java | 3 +-
.../sshd/common/util/closeable/Builder.java | 26 ++++----
.../common/util/closeable/FuturesCloseable.java | 4 +-
.../util/closeable/ParallelCloseable.java | 4 +-
.../util/closeable/SequentialCloseable.java | 4 +-
.../common/util/closeable/SimpleCloseable.java | 4 +-
.../java/org/apache/sshd/server/SshServer.java | 27 ++++----
.../server/channel/AbstractServerChannel.java | 2 +-
.../sshd/server/channel/ChannelSession.java | 4 +-
.../sshd/server/forward/TcpipServerChannel.java | 4 +-
.../sshd/server/x11/ChannelForwardedX11.java | 2 +-
.../common/future/DefaultSshFutureTest.java | 32 +++++-----
.../session/helpers/AbstractSessionTest.java | 4 +-
.../util/closeable/CloseableUtilsTest.java | 7 ++-
.../deprecated/ClientUserAuthServiceOld.java | 4 +-
.../sshd/util/test/AsyncEchoShellFactory.java | 4 +-
.../org/apache/sshd/util/test/BogusChannel.java | 2 +-
54 files changed, 224 insertions(+), 173 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-contrib/src/test/java/org/apache/sshd/common/channel/throttle/ThrottlingPacketWriterTest.java
----------------------------------------------------------------------
diff --git a/sshd-contrib/src/test/java/org/apache/sshd/common/channel/throttle/ThrottlingPacketWriterTest.java b/sshd-contrib/src/test/java/org/apache/sshd/common/channel/throttle/ThrottlingPacketWriterTest.java
index 94958c8..056ff65 100644
--- a/sshd-contrib/src/test/java/org/apache/sshd/common/channel/throttle/ThrottlingPacketWriterTest.java
+++ b/sshd-contrib/src/test/java/org/apache/sshd/common/channel/throttle/ThrottlingPacketWriterTest.java
@@ -123,7 +123,7 @@ public class ThrottlingPacketWriterTest extends BaseTestSupport {
@Override
public IoWriteFuture writePacket(Buffer buffer) throws IOException {
- return new IoWriteFutureImpl(buffer);
+ return new IoWriteFutureImpl(MockPacketWriter.class.getSimpleName(), buffer);
}
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
index b7becde..a1868c7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java
@@ -52,7 +52,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
@Override
protected OpenFuture doInit(Buffer buffer) {
- OpenFuture f = new DefaultOpenFuture(this);
+ OpenFuture f = new DefaultOpenFuture(this, this);
String changeEvent = "auth-agent";
try {
out = new ChannelOutputStream(this, getRemoteWindow(), log, SshConstants.SSH_MSG_CHANNEL_DATA, true);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
index 969f330..395bd37 100644
--- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
+++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java
@@ -71,7 +71,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel {
@Override
protected OpenFuture doInit(Buffer buffer) {
- OpenFuture f = new DefaultOpenFuture(this);
+ OpenFuture f = new DefaultOpenFuture(this, this);
try {
out = new ChannelOutputStream(this, getRemoteWindow(), log, SshConstants.SSH_MSG_CHANNEL_DATA, true);
authSocket = this.getString(SshAgent.SSH_AUTHSOCKET_ENV_NAME);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index ce4b192..0e8979e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -456,21 +456,22 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
@Override
protected Closeable getInnerCloseable() {
+ Object closeId = toString();
return builder()
- .run(() -> removeSessionTimeout(sessionFactory))
- .sequential(connector, ioServiceFactory)
- .run(() -> {
- connector = null;
- ioServiceFactory = null;
- if (shutdownExecutor && (executor != null) && (!executor.isShutdown())) {
- try {
- executor.shutdownNow();
- } finally {
- executor = null;
- }
+ .run(closeId, () -> removeSessionTimeout(sessionFactory))
+ .sequential(connector, ioServiceFactory)
+ .run(closeId, () -> {
+ connector = null;
+ ioServiceFactory = null;
+ if (shutdownExecutor && (executor != null) && (!executor.isShutdown())) {
+ try {
+ executor.shutdownNow();
+ } finally {
+ executor = null;
}
- })
- .build();
+ }
+ })
+ .build();
}
@Override
@@ -584,7 +585,7 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
throw new IllegalStateException("SshClient not started. Please call start() method before connecting to a server");
}
- ConnectFuture connectFuture = new DefaultConnectFuture(null);
+ ConnectFuture connectFuture = new DefaultConnectFuture(username + "@" + address, null);
SshFutureListener<IoConnectFuture> listener = createConnectCompletionListener(connectFuture, username, address, identities, useDefaultIdentities);
connector.connect(address).addListener(listener);
return connectFuture;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
index 4159a53..4b61734 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java
@@ -175,7 +175,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C
protected Closeable getInnerCloseable() {
return builder()
.when(openFuture)
- .run(() -> {
+ .run(toString(), () -> {
// If the channel has not been opened yet,
// skip the SSH_MSG_CHANNEL_CLOSE exchange
if (openFuture == null) {
@@ -297,7 +297,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C
throw new SshException("Session has been closed");
}
- openFuture = new DefaultOpenFuture(lock);
+ openFuture = new DefaultOpenFuture(this.toString(), lock);
if (log.isDebugEnabled()) {
log.debug("open({}) Send SSH_MSG_CHANNEL_OPEN - type={}", this, type);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
index 5658e95..4ecfbf4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java
@@ -70,7 +70,7 @@ public class ChannelDirectTcpip extends AbstractClientChannel {
throw new SshException("Session has been closed");
}
- openFuture = new DefaultOpenFuture(lock);
+ openFuture = new DefaultOpenFuture(remote, lock);
if (log.isDebugEnabled()) {
log.debug("open({}) SSH_MSG_CHANNEL_OPEN", this);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultAuthFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultAuthFuture.java b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultAuthFuture.java
index da10342..4e5c406 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultAuthFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultAuthFuture.java
@@ -31,8 +31,8 @@ import org.apache.sshd.common.future.DefaultVerifiableSshFuture;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class DefaultAuthFuture extends DefaultVerifiableSshFuture<AuthFuture> implements AuthFuture {
- public DefaultAuthFuture(Object lock) {
- super(lock);
+ public DefaultAuthFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
index e028690..e746954 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultConnectFuture.java
@@ -32,8 +32,8 @@ import org.apache.sshd.common.io.IoSession;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class DefaultConnectFuture extends DefaultVerifiableSshFuture<ConnectFuture> implements ConnectFuture {
- public DefaultConnectFuture(Object lock) {
- super(lock);
+ public DefaultConnectFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultOpenFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultOpenFuture.java b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultOpenFuture.java
index c2ee400..aa91c92 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultOpenFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/future/DefaultOpenFuture.java
@@ -30,8 +30,8 @@ import org.apache.sshd.common.future.DefaultVerifiableSshFuture;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class DefaultOpenFuture extends DefaultVerifiableSshFuture<OpenFuture> implements OpenFuture {
- public DefaultOpenFuture(Object lock) {
- super(lock);
+ public DefaultOpenFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java b/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
index 4e9e6c9..b67310d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
@@ -538,7 +538,7 @@ public abstract class AbstractClientSession extends AbstractSession implements C
}
if (kexState.compareAndSet(KexState.DONE, KexState.INIT)) {
- DefaultKeyExchangeFuture kexFuture = new DefaultKeyExchangeFuture(null);
+ DefaultKeyExchangeFuture kexFuture = new DefaultKeyExchangeFuture(toString(), null);
DefaultKeyExchangeFuture prev = kexFutureHolder.getAndSet(kexFuture);
if (prev != null) {
synchronized (prev) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
index 145328e..869f0d1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java
@@ -88,8 +88,8 @@ public class ClientConnectionService extends AbstractConnectionService<AbstractC
log.debug("Error (" + e.getClass().getSimpleName() + ") sending keepalive message=" + request + ": " + e.getMessage());
}
- final Throwable t = e;
- return new AbstractIoWriteFuture(null) {
+ Throwable t = e;
+ return new AbstractIoWriteFuture(request, null) {
{
setValue(t);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
index 4ae713f..ba48841 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
@@ -83,7 +83,7 @@ public class ClientSessionImpl extends AbstractClientSession {
nextServiceFactory = null;
}
- authFuture = new DefaultAuthFuture(lock);
+ authFuture = new DefaultAuthFuture(ioSession.getRemoteAddress(), lock);
authFuture.setAuthed(false);
signalSessionCreated(ioSession);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
index dbe4202..5c8339e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java
@@ -121,7 +121,7 @@ public class ClientUserAuthService
ClientSession session = getClientSession();
// check if any previous future in use
- AuthFuture authFuture = new DefaultAuthFuture(clientSession.getLock());
+ AuthFuture authFuture = new DefaultAuthFuture(service, clientSession.getLock());
AuthFuture currentFuture = authFutureHolder.getAndSet(authFuture);
if (currentFuture != null) {
if (currentFuture.isDone()) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
index 8a72a3f..b72502c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultSftpClient.java
@@ -125,7 +125,7 @@ public class DefaultSftpClient extends AbstractSftpClient {
}
@Override
- public Map<String, byte[]> getServerExtensions() {
+ public NavigableMap<String, byte[]> getServerExtensions() {
return exposedExtensions;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
index e1eebef..bb88256 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java
@@ -84,7 +84,7 @@ public abstract class AbstractChannel
protected final AtomicBoolean eofReceived = new AtomicBoolean(false);
protected final AtomicBoolean eofSent = new AtomicBoolean(false);
protected AtomicReference<GracefulState> gracefulState = new AtomicReference<>(GracefulState.Opened);
- protected final DefaultCloseFuture gracefulFuture = new DefaultCloseFuture(lock);
+ protected final DefaultCloseFuture gracefulFuture;
/**
* Channel events listener
*/
@@ -124,6 +124,7 @@ public abstract class AbstractChannel
protected AbstractChannel(String discriminator, boolean client, Collection<? extends RequestHandler<Channel>> handlers) {
super(discriminator);
+ gracefulFuture = new DefaultCloseFuture(discriminator, lock);
localWindow = new Window(this, null, client, true);
remoteWindow = new Window(this, null, client, false);
channelListenerProxy = EventListenerUtils.proxyWrapper(ChannelListener.class, getClass().getClassLoader(), channelListeners);
@@ -352,7 +353,7 @@ public abstract class AbstractChannel
}
if (RequestHandler.Result.Replied.equals(result) || (!wantReply)) {
- return new AbstractIoWriteFuture(null) {
+ return new AbstractIoWriteFuture(req, null) {
{
setValue(Boolean.TRUE);
}
@@ -788,14 +789,14 @@ public abstract class AbstractChannel
@Override
public IoWriteFuture writePacket(Buffer buffer) throws IOException {
+ Session s = getSession();
if (!isClosing()) {
- Session s = getSession();
return s.writePacket(buffer);
} else {
if (log.isDebugEnabled()) {
log.debug("writePacket({}) Discarding output packet because channel is being closed", this);
}
- return new AbstractIoWriteFuture(null) {
+ return new AbstractIoWriteFuture(s.toString(), null) {
{
setValue(new EOFException("Channel is being closed"));
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
index 6737a82..1cb75aa 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java
@@ -38,9 +38,15 @@ public class BufferedIoOutputStream extends AbstractInnerCloseable implements Io
protected final IoOutputStream out;
protected final Queue<IoWriteFutureImpl> writes = new ConcurrentLinkedQueue<>();
protected final AtomicReference<IoWriteFutureImpl> currentWrite = new AtomicReference<>();
+ protected final Object id;
- public BufferedIoOutputStream(IoOutputStream out) {
+ public BufferedIoOutputStream(Object id, IoOutputStream out) {
this.out = out;
+ this.id = id;
+ }
+
+ public Object getId() {
+ return id;
}
@Override
@@ -49,46 +55,50 @@ public class BufferedIoOutputStream extends AbstractInnerCloseable implements Io
throw new EOFException("Closed");
}
- IoWriteFutureImpl future = new IoWriteFutureImpl(buffer);
+ IoWriteFutureImpl future = new IoWriteFutureImpl(getId(), buffer);
writes.add(future);
startWriting();
return future;
}
protected void startWriting() throws IOException {
- final IoWriteFutureImpl future = writes.peek();
- if (future != null) {
- if (currentWrite.compareAndSet(null, future)) {
- out.writePacket(future.getBuffer()).addListener(new SshFutureListener<IoWriteFuture>() {
- @Override
- public void operationComplete(IoWriteFuture f) {
- if (f.isWritten()) {
- future.setValue(Boolean.TRUE);
- } else {
- future.setValue(f.getException());
- }
- finishWrite();
- }
+ IoWriteFutureImpl future = writes.peek();
+ if (future == null) {
+ return;
+ }
- @SuppressWarnings("synthetic-access")
- private void finishWrite() {
- writes.remove(future);
- currentWrite.compareAndSet(future, null);
- try {
- startWriting();
- } catch (IOException e) {
- log.error("finishWrite({}) failed ({}) re-start writing", out, e.getClass().getSimpleName());
- }
- }
- });
- }
+ if (!currentWrite.compareAndSet(null, future)) {
+ return;
}
+
+ out.writePacket(future.getBuffer()).addListener(new SshFutureListener<IoWriteFuture>() {
+ @Override
+ public void operationComplete(IoWriteFuture f) {
+ if (f.isWritten()) {
+ future.setValue(Boolean.TRUE);
+ } else {
+ future.setValue(f.getException());
+ }
+ finishWrite();
+ }
+
+ @SuppressWarnings("synthetic-access")
+ private void finishWrite() {
+ writes.remove(future);
+ currentWrite.compareAndSet(future, null);
+ try {
+ startWriting();
+ } catch (IOException e) {
+ log.error("finishWrite({}) failed ({}) re-start writing", out, e.getClass().getSimpleName());
+ }
+ }
+ });
}
@Override
protected Closeable getInnerCloseable() {
return builder()
- .when(writes)
+ .when(getId(), writes)
.close(out)
.build();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java
index 0be24fe..be34737 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java
@@ -40,10 +40,12 @@ import org.apache.sshd.common.util.closeable.AbstractCloseable;
public class ChannelAsyncInputStream extends AbstractCloseable implements IoInputStream, ChannelHolder {
private final Channel channelInstance;
private final Buffer buffer = new ByteArrayBuffer();
+ private final Object readFutureId;
private IoReadFutureImpl pending;
public ChannelAsyncInputStream(Channel channel) {
this.channelInstance = Objects.requireNonNull(channel, "No channel");
+ this.readFutureId = toString();
}
@Override
@@ -60,7 +62,7 @@ public class ChannelAsyncInputStream extends AbstractCloseable implements IoInpu
@Override
public IoReadFuture read(Buffer buf) {
- IoReadFutureImpl future = new IoReadFutureImpl(buf);
+ IoReadFutureImpl future = new IoReadFutureImpl(readFutureId, buf);
if (isClosing()) {
future.setValue(new IOException("Closed"));
} else {
@@ -140,8 +142,8 @@ public class ChannelAsyncInputStream extends AbstractCloseable implements IoInpu
public static class IoReadFutureImpl extends DefaultVerifiableSshFuture<IoReadFuture> implements IoReadFuture {
private final Buffer buffer;
- public IoReadFutureImpl(Buffer buffer) {
- super(null);
+ public IoReadFutureImpl(Object id, Buffer buffer) {
+ super(id, null);
this.buffer = buffer;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
index e525355..b0e715e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java
@@ -39,11 +39,13 @@ public class ChannelAsyncOutputStream extends AbstractCloseable implements IoOut
private final PacketWriter packetWriter;
private final byte cmd;
private final AtomicReference<IoWriteFutureImpl> pendingWrite = new AtomicReference<>();
+ private final Object packetWriteId;
public ChannelAsyncOutputStream(Channel channel, byte cmd) {
this.channelInstance = Objects.requireNonNull(channel, "No channel");
this.packetWriter = channelInstance.resolveChannelStreamPacketWriter(channel, cmd);
this.cmd = cmd;
+ this.packetWriteId = channel.toString() + "[" + SshConstants.getCommandMessageName(cmd) + "]";
}
@Override
@@ -61,7 +63,7 @@ public class ChannelAsyncOutputStream extends AbstractCloseable implements IoOut
throw new EOFException("Closed");
}
- IoWriteFutureImpl future = new IoWriteFutureImpl(buffer);
+ IoWriteFutureImpl future = new IoWriteFutureImpl(packetWriteId, buffer);
if (!pendingWrite.compareAndSet(null, future)) {
throw new WritePendingException("No write pending future");
}
@@ -75,7 +77,8 @@ public class ChannelAsyncOutputStream extends AbstractCloseable implements IoOut
try {
packetWriter.close();
} catch (IOException e) {
- log.error("preClose({}) Failed ({}) to pre-close packet writer: {}", this, e.getClass().getSimpleName(), e.getMessage());
+ log.error("preClose({}) Failed ({}) to pre-close packet writer: {}",
+ this, e.getClass().getSimpleName(), e.getMessage());
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/channel/IoWriteFutureImpl.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/IoWriteFutureImpl.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/IoWriteFutureImpl.java
index 1822c92..5c5b41c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/IoWriteFutureImpl.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/IoWriteFutureImpl.java
@@ -30,8 +30,8 @@ import org.apache.sshd.common.util.buffer.Buffer;
public class IoWriteFutureImpl extends AbstractIoWriteFuture {
private final Buffer buffer;
- public IoWriteFutureImpl(Buffer buffer) {
- super(null);
+ public IoWriteFutureImpl(Object id, Buffer buffer) {
+ super(id, null);
this.buffer = Objects.requireNonNull(buffer, "No buffer provided");
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
index b2403dd..1017f64 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/DefaultForwardingFilter.java
@@ -858,7 +858,7 @@ public class DefaultForwardingFilter
@Override
protected synchronized Closeable getInnerCloseable() {
- return builder().parallel(dynamicLocal.values()).close(acceptor).build();
+ return builder().parallel(toString(), dynamicLocal.values()).close(acceptor).build();
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
index 673114e..f55dca1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/forward/TcpipClientChannel.java
@@ -83,10 +83,12 @@ public class TcpipClientChannel extends AbstractClientChannel {
default:
throw new SshException("Unknown client channel type: " + typeEnum);
}
+
if (closeFuture.isClosed()) {
throw new SshException("Session has been closed");
}
- openFuture = new DefaultOpenFuture(lock);
+
+ openFuture = new DefaultOpenFuture(src, lock);
if (log.isDebugEnabled()) {
log.debug("open({}) send SSH_MSG_CHANNEL_OPEN", this);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/AbstractSshFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/AbstractSshFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/AbstractSshFuture.java
index f10f0f5..b1217c4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/AbstractSshFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/AbstractSshFuture.java
@@ -37,8 +37,18 @@ public abstract class AbstractSshFuture<T extends SshFuture> extends AbstractLog
*/
protected static final Object CANCELED = new Object();
- protected AbstractSshFuture() {
- super();
+ private final Object id;
+
+ /**
+ * @param id Some identifier useful as {@link #toString()} value
+ */
+ protected AbstractSshFuture(Object id) {
+ this.id = id;
+ }
+
+ @Override
+ public Object getId() {
+ return id;
}
@Override
@@ -154,4 +164,9 @@ public abstract class AbstractSshFuture<T extends SshFuture> extends AbstractLog
protected T asT() {
return (T) this;
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "[id=" + getId() + "]";
+ }
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
index 3de2d01..4c34a06 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultCloseFuture.java
@@ -28,11 +28,12 @@ public class DefaultCloseFuture extends DefaultSshFuture<CloseFuture> implements
/**
* Create a new instance
*
+ * @param id Some identifier useful as {@link #toString()} value
* @param lock A synchronization object for locking access - if {@code null}
* then synchronization occurs on {@code this} instance
*/
- public DefaultCloseFuture(Object lock) {
- super(lock);
+ public DefaultCloseFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultKeyExchangeFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultKeyExchangeFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultKeyExchangeFuture.java
index 68029c5..880bb2a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultKeyExchangeFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultKeyExchangeFuture.java
@@ -27,8 +27,8 @@ import org.apache.sshd.common.SshException;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class DefaultKeyExchangeFuture extends DefaultVerifiableSshFuture<KeyExchangeFuture> implements KeyExchangeFuture {
- public DefaultKeyExchangeFuture(Object lock) {
- super(lock);
+ public DefaultKeyExchangeFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
index db380c2..d05ce3b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultSshFuture.java
@@ -42,10 +42,13 @@ public class DefaultSshFuture<T extends SshFuture> extends AbstractSshFuture<T>
/**
* Creates a new instance.
*
+ * @param id Some identifier useful as {@link #toString()} value
* @param lock A synchronization object for locking access - if {@code null}
* then synchronization occurs on {@code this} instance
*/
- public DefaultSshFuture(Object lock) {
+ public DefaultSshFuture(Object id, Object lock) {
+ super(id);
+
this.lock = (lock != null) ? lock : this;
}
@@ -224,6 +227,6 @@ public class DefaultSshFuture<T extends SshFuture> extends AbstractSshFuture<T>
@Override
public String toString() {
- return getClass().getSimpleName() + "[value=" + result + "]";
+ return super.toString() + "[value=" + result + "]";
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultVerifiableSshFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultVerifiableSshFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultVerifiableSshFuture.java
index 64b8094..1b02fed 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultVerifiableSshFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/DefaultVerifiableSshFuture.java
@@ -24,7 +24,7 @@ package org.apache.sshd.common.future;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class DefaultVerifiableSshFuture<T extends SshFuture> extends DefaultSshFuture<T> implements VerifiableFuture<T> {
- protected DefaultVerifiableSshFuture(Object lock) {
- super(lock);
+ protected DefaultVerifiableSshFuture(Object id, Object lock) {
+ super(id, lock);
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/future/WaitableFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/future/WaitableFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/future/WaitableFuture.java
index ba84820..aff4adc 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/future/WaitableFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/future/WaitableFuture.java
@@ -32,6 +32,10 @@ import java.util.concurrent.TimeUnit;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public interface WaitableFuture {
+ /**
+ * @return Some identifier useful as {@link #toString()} value
+ */
+ Object getId();
/**
* Wait {@link Long#MAX_VALUE} msec. for the asynchronous operation to complete.
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/AbstractIoWriteFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/AbstractIoWriteFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/io/AbstractIoWriteFuture.java
index 755d5a5..947b678 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/AbstractIoWriteFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/AbstractIoWriteFuture.java
@@ -28,8 +28,8 @@ import org.apache.sshd.common.future.DefaultVerifiableSshFuture;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractIoWriteFuture extends DefaultVerifiableSshFuture<IoWriteFuture> implements IoWriteFuture {
- protected AbstractIoWriteFuture(Object lock) {
- super(lock);
+ protected AbstractIoWriteFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index 4b48787..e7da612 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -77,7 +77,7 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common
public IoConnectFuture connect(SocketAddress address) {
class Future extends DefaultSshFuture<IoConnectFuture> implements IoConnectFuture {
Future(Object lock) {
- super(lock);
+ super(address, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
index 02dd74c..81d5b18 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
@@ -38,15 +38,17 @@ import org.apache.sshd.common.util.closeable.AbstractInnerCloseable;
import org.apache.sshd.common.util.closeable.IoBaseCloseable;
/**
+ * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class MinaSession extends AbstractInnerCloseable implements IoSession {
-
private final MinaService service;
private final org.apache.mina.core.session.IoSession session;
+ private final Object sessionWriteId;
public MinaSession(MinaService service, org.apache.mina.core.session.IoSession session) {
this.service = service;
this.session = session;
+ this.sessionWriteId = Objects.toString(session);
}
public org.apache.mina.core.session.IoSession getSession() {
@@ -87,7 +89,7 @@ public class MinaSession extends AbstractInnerCloseable implements IoSession {
protected Closeable getInnerCloseable() {
return new IoBaseCloseable() {
@SuppressWarnings("synthetic-access")
- private final DefaultCloseFuture future = new DefaultCloseFuture(lock);
+ private final DefaultCloseFuture future = new DefaultCloseFuture(MinaSession.this.toString(), lock);
@SuppressWarnings("synthetic-access")
@Override
@@ -138,7 +140,7 @@ public class MinaSession extends AbstractInnerCloseable implements IoSession {
// NOTE !!! data buffer may NOT be re-used when method returns - at least until IoWriteFuture is signalled
public IoWriteFuture write(IoBuffer buffer) {
- final Future future = new Future(null);
+ Future future = new Future(sessionWriteId, null);
session.write(buffer).addListener((IoFutureListener<WriteFuture>) cf -> {
Throwable t = cf.getException();
if (t != null) {
@@ -151,8 +153,8 @@ public class MinaSession extends AbstractInnerCloseable implements IoSession {
}
public static class Future extends AbstractIoWriteFuture {
- public Future(Object lock) {
- super(lock);
+ public Future(Object id, Object lock) {
+ super(id, lock);
}
public void setWritten() {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
index ad81b74..68397b1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
@@ -48,7 +48,7 @@ public class Nio2Connector extends Nio2Service implements IoConnector {
log.debug("Connecting to {}", address);
}
- IoConnectFuture future = new DefaultIoConnectFuture(null);
+ IoConnectFuture future = new DefaultIoConnectFuture(address, null);
AsynchronousSocketChannel channel = null;
AsynchronousSocketChannel socket = null;
try {
@@ -151,8 +151,8 @@ public class Nio2Connector extends Nio2Service implements IoConnector {
}
public static class DefaultIoConnectFuture extends DefaultSshFuture<IoConnectFuture> implements IoConnectFuture {
- public DefaultIoConnectFuture(Object lock) {
- super(lock);
+ public DefaultIoConnectFuture(Object id, Object lock) {
+ super(id, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
index b6a5b43..dbdac9e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
@@ -29,8 +29,8 @@ import org.apache.sshd.common.io.AbstractIoWriteFuture;
public class Nio2DefaultIoWriteFuture extends AbstractIoWriteFuture {
private final ByteBuffer buffer;
- public Nio2DefaultIoWriteFuture(Object lock, ByteBuffer buffer) {
- super(lock);
+ public Nio2DefaultIoWriteFuture(Object id, Object lock, ByteBuffer buffer) {
+ super(id, lock);
this.buffer = buffer;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
index 2686415..763b54c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Service.java
@@ -111,7 +111,7 @@ public abstract class Nio2Service extends AbstractInnerCloseable implements IoSe
@Override
protected Closeable getInnerCloseable() {
- return builder().parallel(sessions.values()).build();
+ return builder().parallel(toString(), sessions.values()).build();
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
index a846562..c8bcf89 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
@@ -137,7 +137,7 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
}
ByteBuffer buf = ByteBuffer.wrap(buffer.array(), buffer.rpos(), buffer.available());
- Nio2DefaultIoWriteFuture future = new Nio2DefaultIoWriteFuture(null, buf);
+ Nio2DefaultIoWriteFuture future = new Nio2DefaultIoWriteFuture(getRemoteAddress(), null, buf);
if (isClosing()) {
Throwable exc = new ClosedChannelException();
future.setException(exc);
@@ -181,7 +181,8 @@ public class Nio2Session extends AbstractCloseable implements IoSession {
@Override
protected CloseFuture doCloseGracefully() {
- return builder().when(writes).run(() -> {
+ Object closeId = toString();
+ return builder().when(closeId, writes).run(closeId, () -> {
try {
AsynchronousSocketChannel socket = getSocket();
socket.shutdownOutput();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
index 14db9b1..83ae0d8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractConnectionService.java
@@ -254,7 +254,7 @@ public abstract class AbstractConnectionService<S extends AbstractSession>
protected Closeable getInnerCloseable() {
return builder()
.sequential(forwarderHolder.get(), agentForwardHolder.get(), x11ForwardHolder.get())
- .parallel(channels.values())
+ .parallel(toString(), channels.values())
.build();
}
@@ -697,7 +697,7 @@ public abstract class AbstractConnectionService<S extends AbstractSession>
}
if (RequestHandler.Result.Replied.equals(result) || (!wantReply)) {
- return new AbstractIoWriteFuture(null) {
+ return new AbstractIoWriteFuture(req, null) {
{
setValue(Boolean.TRUE);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
index 5d01de4..9d25fa9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/AbstractSession.java
@@ -927,7 +927,7 @@ public abstract class AbstractSession extends AbstractKexFactoryManager implemen
@Override
protected Closeable getInnerCloseable() {
return builder()
- .parallel(getServices())
+ .parallel(toString(), getServices())
.close(ioSession)
.build();
}
@@ -1018,13 +1018,14 @@ public abstract class AbstractSession extends AbstractKexFactoryManager implemen
if (!KexState.DONE.equals(kexState.get())) {
byte cmd = buffer.array()[buffer.rpos()];
if (cmd > SshConstants.SSH_MSG_KEX_LAST) {
+ String cmdName = SshConstants.getCommandMessageName(cmd & 0xFF);
synchronized (pendingPackets) {
if (!KexState.DONE.equals(kexState.get())) {
if (pendingPackets.isEmpty()) {
log.debug("writePacket({})[{}] Start flagging packets as pending until key exchange is done",
- this, SshConstants.getCommandMessageName(cmd & 0xFF));
+ this, cmdName);
}
- PendingWriteFuture future = new PendingWriteFuture(buffer);
+ PendingWriteFuture future = new PendingWriteFuture(cmdName, buffer);
pendingPackets.add(future);
return future;
}
@@ -2396,7 +2397,7 @@ public abstract class AbstractSession extends AbstractKexFactoryManager implemen
log.info("requestNewKeysExchange({}) Initiating key re-exchange", this);
sendKexInit();
- DefaultKeyExchangeFuture newFuture = new DefaultKeyExchangeFuture(null);
+ DefaultKeyExchangeFuture newFuture = new DefaultKeyExchangeFuture(toString(), null);
DefaultKeyExchangeFuture kexFuture = kexFutureHolder.getAndSet(newFuture);
if (kexFuture != null) {
synchronized (kexFuture) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/PendingWriteFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/PendingWriteFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/PendingWriteFuture.java
index bfc7e46..9ce4b4f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/PendingWriteFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/session/helpers/PendingWriteFuture.java
@@ -33,8 +33,8 @@ import org.apache.sshd.common.util.buffer.Buffer;
public class PendingWriteFuture extends AbstractIoWriteFuture implements SshFutureListener<IoWriteFuture> {
private final Buffer buffer;
- public PendingWriteFuture(Buffer buffer) {
- super(null);
+ public PendingWriteFuture(Object id, Buffer buffer) {
+ super(id, null);
this.buffer = Objects.requireNonNull(buffer, "No buffer provided");
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/AbstractCloseable.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/AbstractCloseable.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/AbstractCloseable.java
index 1c5d78f..0a4c169 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/AbstractCloseable.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/AbstractCloseable.java
@@ -49,7 +49,7 @@ public abstract class AbstractCloseable extends IoBaseCloseable {
/**
* A future that will be set 'closed' when the object is actually closed
*/
- protected final CloseFuture closeFuture = new DefaultCloseFuture(lock);
+ protected final CloseFuture closeFuture;
protected AbstractCloseable() {
this("");
@@ -57,6 +57,7 @@ public abstract class AbstractCloseable extends IoBaseCloseable {
protected AbstractCloseable(String discriminator) {
super(discriminator);
+ closeFuture = new DefaultCloseFuture(discriminator, lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/Builder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/Builder.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/Builder.java
index 15e9da3..847d49c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/Builder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/Builder.java
@@ -39,8 +39,8 @@ public final class Builder implements ObjectBuilder<Closeable> {
this.lock = Objects.requireNonNull(lock, "No lock");
}
- public Builder run(Runnable r) {
- return close(new SimpleCloseable(lock) {
+ public Builder run(Object id, Runnable r) {
+ return close(new SimpleCloseable(id, lock) {
@Override
protected void doClose(boolean immediately) {
try {
@@ -55,7 +55,7 @@ public final class Builder implements ObjectBuilder<Closeable> {
@SuppressWarnings("rawtypes")
public <T extends SshFuture> Builder when(SshFuture<T> future) {
if (future != null) {
- when(Collections.singleton(future));
+ when(future.getId(), Collections.singleton(future));
}
return this;
}
@@ -63,12 +63,12 @@ public final class Builder implements ObjectBuilder<Closeable> {
@SuppressWarnings("rawtypes")
@SafeVarargs
public final <T extends SshFuture> Builder when(SshFuture<T>... futures) {
- return when(Arrays.asList(futures));
+ return when(getClass().getSimpleName(), Arrays.asList(futures));
}
@SuppressWarnings("rawtypes")
- public <T extends SshFuture> Builder when(Iterable<? extends SshFuture<T>> futures) {
- return close(new FuturesCloseable<>(lock, futures));
+ public <T extends SshFuture> Builder when(Object id, Iterable<? extends SshFuture<T>> futures) {
+ return close(new FuturesCloseable<>(id, lock, futures));
}
public Builder sequential(Closeable... closeables) {
@@ -78,21 +78,21 @@ public final class Builder implements ObjectBuilder<Closeable> {
return this;
}
- public Builder sequential(Iterable<Closeable> closeables) {
- return close(new SequentialCloseable(lock, closeables));
+ public Builder sequential(Object id, Iterable<Closeable> closeables) {
+ return close(new SequentialCloseable(id, lock, closeables));
}
public Builder parallel(Closeable... closeables) {
if (closeables.length == 1) {
close(closeables[0]);
} else if (closeables.length > 0) {
- parallel(Arrays.asList(closeables));
+ parallel(getClass().getSimpleName(), Arrays.asList(closeables));
}
return this;
}
- public Builder parallel(Iterable<? extends Closeable> closeables) {
- return close(new ParallelCloseable(lock, closeables));
+ public Builder parallel(Object id, Iterable<? extends Closeable> closeables) {
+ return close(new ParallelCloseable(id, lock, closeables));
}
public Builder close(Closeable c) {
@@ -105,11 +105,11 @@ public final class Builder implements ObjectBuilder<Closeable> {
@Override
public Closeable build() {
if (closeables.isEmpty()) {
- return new SimpleCloseable(lock);
+ return new SimpleCloseable(getClass().getSimpleName(), lock);
} else if (closeables.size() == 1) {
return closeables.get(0);
} else {
- return new SequentialCloseable(lock, closeables);
+ return new SequentialCloseable(getClass().getSimpleName(), lock, closeables);
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/FuturesCloseable.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/FuturesCloseable.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/FuturesCloseable.java
index 2a24ffc..13dffb7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/FuturesCloseable.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/FuturesCloseable.java
@@ -34,8 +34,8 @@ public class FuturesCloseable<T extends SshFuture> extends SimpleCloseable {
private final Iterable<? extends SshFuture<T>> futures;
- public FuturesCloseable(Object lock, Iterable<? extends SshFuture<T>> futures) {
- super(lock);
+ public FuturesCloseable(Object id, Object lock, Iterable<? extends SshFuture<T>> futures) {
+ super(id, lock);
this.futures = (futures == null) ? Collections.emptyList() : futures;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/ParallelCloseable.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/ParallelCloseable.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/ParallelCloseable.java
index 029c9a0..16634cc 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/ParallelCloseable.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/ParallelCloseable.java
@@ -35,8 +35,8 @@ public class ParallelCloseable extends SimpleCloseable {
private final Iterable<? extends Closeable> closeables;
- public ParallelCloseable(Object lock, Iterable<? extends Closeable> closeables) {
- super(lock);
+ public ParallelCloseable(Object id, Object lock, Iterable<? extends Closeable> closeables) {
+ super(id, lock);
this.closeables = (closeables == null) ? Collections.emptyList() : closeables;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SequentialCloseable.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SequentialCloseable.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SequentialCloseable.java
index 67abd88..c018b00 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SequentialCloseable.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SequentialCloseable.java
@@ -34,8 +34,8 @@ import org.apache.sshd.common.future.SshFutureListener;
public class SequentialCloseable extends SimpleCloseable {
private final Iterable<? extends Closeable> closeables;
- public SequentialCloseable(Object lock, Iterable<? extends Closeable> closeables) {
- super(lock);
+ public SequentialCloseable(Object id, Object lock, Iterable<? extends Closeable> closeables) {
+ super(id, lock);
this.closeables = (closeables == null) ? Collections.emptyList() : closeables;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SimpleCloseable.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SimpleCloseable.java b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SimpleCloseable.java
index 8978972..58e2932 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SimpleCloseable.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/closeable/SimpleCloseable.java
@@ -32,8 +32,8 @@ public class SimpleCloseable extends IoBaseCloseable {
protected final DefaultCloseFuture future;
protected final AtomicBoolean closing;
- public SimpleCloseable(Object lock) {
- future = new DefaultCloseFuture(lock);
+ public SimpleCloseable(Object id, Object lock) {
+ future = new DefaultCloseFuture(id, lock);
closing = new AtomicBoolean();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java b/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
index 0985b2b..0d1d421 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/SshServer.java
@@ -349,21 +349,22 @@ public class SshServer extends AbstractFactoryManager implements ServerFactoryMa
@Override
protected Closeable getInnerCloseable() {
+ Object closeId = toString();
return builder()
- .run(() -> removeSessionTimeout(sessionFactory))
- .sequential(acceptor, ioServiceFactory)
- .run(() -> {
- acceptor = null;
- ioServiceFactory = null;
- if (shutdownExecutor && (executor != null) && (!executor.isShutdown())) {
- try {
- executor.shutdownNow();
- } finally {
- executor = null;
- }
+ .run(closeId, () -> removeSessionTimeout(sessionFactory))
+ .sequential(acceptor, ioServiceFactory)
+ .run(closeId, () -> {
+ acceptor = null;
+ ioServiceFactory = null;
+ if (shutdownExecutor && (executor != null) && (!executor.isShutdown())) {
+ try {
+ executor.shutdownNow();
+ } finally {
+ executor = null;
}
- })
- .build();
+ }
+ })
+ .build();
}
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/server/channel/AbstractServerChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/channel/AbstractServerChannel.java b/sshd-core/src/main/java/org/apache/sshd/server/channel/AbstractServerChannel.java
index c976c3b..2f3a766 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/channel/AbstractServerChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/channel/AbstractServerChannel.java
@@ -86,7 +86,7 @@ public abstract class AbstractServerChannel extends AbstractChannel implements S
}
protected OpenFuture doInit(Buffer buffer) {
- OpenFuture f = new DefaultOpenFuture(this);
+ OpenFuture f = new DefaultOpenFuture(this, this);
String changeEvent = "doInit";
try {
signalChannelOpenSuccess();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
index 44a5087..b7c4712 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
@@ -95,7 +95,7 @@ public class ChannelSession extends AbstractServerChannel {
protected Buffer tempBuffer;
protected final AtomicBoolean commandStarted = new AtomicBoolean(false);
protected final StandardEnvironment env = new StandardEnvironment();
- protected final CloseFuture commandExitFuture = new DefaultCloseFuture(lock);
+ protected final CloseFuture commandExitFuture;
public ChannelSession() {
this(DEFAULT_HANDLERS);
@@ -103,6 +103,8 @@ public class ChannelSession extends AbstractServerChannel {
public ChannelSession(Collection<? extends RequestHandler<Channel>> handlers) {
super(handlers);
+
+ commandExitFuture = new DefaultCloseFuture(getClass().getSimpleName(), lock);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java b/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
index 317e669..8b8d201 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/forward/TcpipServerChannel.java
@@ -131,7 +131,7 @@ public class TcpipServerChannel extends AbstractServerChannel {
Session session = getSession();
FactoryManager manager = Objects.requireNonNull(session.getFactoryManager(), "No factory manager");
TcpForwardingFilter filter = manager.getTcpForwardingFilter();
- OpenFuture f = new DefaultOpenFuture(this);
+ OpenFuture f = new DefaultOpenFuture(this, this);
try {
if ((address == null) || (filter == null) || (!filter.canConnect(type, address, session))) {
if (log.isDebugEnabled()) {
@@ -260,7 +260,7 @@ public class TcpipServerChannel extends AbstractServerChannel {
// shutdown the temporary executor service if had to create it
boolean shutdown = (executors != service) || isShutdownOnExit();
- return builder().when(closingFeature).run(() -> {
+ return builder().when(closingFeature).run(toString(), () -> {
executors.submit(() -> {
try {
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/main/java/org/apache/sshd/server/x11/ChannelForwardedX11.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/x11/ChannelForwardedX11.java b/sshd-core/src/main/java/org/apache/sshd/server/x11/ChannelForwardedX11.java
index 6f99fed..42c3c38 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/x11/ChannelForwardedX11.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/x11/ChannelForwardedX11.java
@@ -53,7 +53,7 @@ public class ChannelForwardedX11 extends AbstractClientChannel {
if (closeFuture.isClosed()) {
throw new SshException("Session has been closed");
}
- openFuture = new DefaultOpenFuture(lock);
+ openFuture = new DefaultOpenFuture(remote, lock);
Session session = getSession();
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/common/future/DefaultSshFutureTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/future/DefaultSshFutureTest.java b/sshd-core/src/test/java/org/apache/sshd/common/future/DefaultSshFutureTest.java
index 4d3edb2..6125693 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/future/DefaultSshFutureTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/future/DefaultSshFutureTest.java
@@ -38,8 +38,8 @@ public class DefaultSshFutureTest extends BaseTestSupport {
@Test
@SuppressWarnings("rawtypes")
public void testAwaitUninterrupted() {
- final DefaultSshFuture future = new DefaultSshFuture(null);
- final Object expected = new Object();
+ DefaultSshFuture future = new DefaultSshFuture(getCurrentTestName(), null);
+ Object expected = new Object();
new Thread() {
@Override
public void run() {
@@ -59,16 +59,16 @@ public class DefaultSshFutureTest extends BaseTestSupport {
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testNotifyMultipleListeners() {
- final DefaultSshFuture future = new DefaultSshFuture(null);
- final AtomicInteger listenerCount = new AtomicInteger(0);
- final Object expected = new Object();
- final SshFutureListener listener = f -> {
+ DefaultSshFuture future = new DefaultSshFuture(getCurrentTestName(), null);
+ AtomicInteger listenerCount = new AtomicInteger(0);
+ Object expected = new Object();
+ SshFutureListener listener = f -> {
assertSame("Mismatched future instance", future, f);
assertSame("Mismatched value object", expected, future.getValue());
listenerCount.incrementAndGet();
};
- final int numListeners = Byte.SIZE;
+ int numListeners = Byte.SIZE;
for (int index = 0; index < numListeners; index++) {
future.addListener(listener);
}
@@ -80,10 +80,10 @@ public class DefaultSshFutureTest extends BaseTestSupport {
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testListenerInvokedDirectlyAfterResultSet() {
- final DefaultSshFuture future = new DefaultSshFuture(null);
- final AtomicInteger listenerCount = new AtomicInteger(0);
- final Object expected = new Object();
- final SshFutureListener listener = f -> {
+ DefaultSshFuture future = new DefaultSshFuture(getCurrentTestName(), null);
+ AtomicInteger listenerCount = new AtomicInteger(0);
+ Object expected = new Object();
+ SshFutureListener listener = f -> {
assertSame("Mismatched future instance", future, f);
assertSame("Mismatched value object", expected, future.getValue());
listenerCount.incrementAndGet();
@@ -98,7 +98,7 @@ public class DefaultSshFutureTest extends BaseTestSupport {
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testAddAndRemoveRegisteredListenersBeforeResultSet() {
- DefaultSshFuture future = new DefaultSshFuture(null);
+ DefaultSshFuture future = new DefaultSshFuture(getCurrentTestName(), null);
SshFutureListener listener = Mockito.mock(SshFutureListener.class);
for (int index = 1; index <= Byte.SIZE; index++) {
future.addListener(listener);
@@ -114,10 +114,10 @@ public class DefaultSshFutureTest extends BaseTestSupport {
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testListenerNotRemovedIfResultSet() {
- final DefaultSshFuture future = new DefaultSshFuture(null);
- final AtomicInteger listenerCount = new AtomicInteger(0);
- final Object expected = new Object();
- final SshFutureListener listener = f -> {
+ DefaultSshFuture future = new DefaultSshFuture(getCurrentTestName(), null);
+ AtomicInteger listenerCount = new AtomicInteger(0);
+ Object expected = new Object();
+ SshFutureListener listener = f -> {
assertSame("Mismatched future instance", future, f);
assertSame("Mismatched value object", expected, future.getValue());
listenerCount.incrementAndGet();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/common/session/helpers/AbstractSessionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/session/helpers/AbstractSessionTest.java b/sshd-core/src/test/java/org/apache/sshd/common/session/helpers/AbstractSessionTest.java
index 538f2cd..026dab2 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/session/helpers/AbstractSessionTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/session/helpers/AbstractSessionTest.java
@@ -298,7 +298,7 @@ public class AbstractSessionTest extends BaseTestSupport {
private final CloseFuture closeFuture;
public MyIoSession() {
- closeFuture = new DefaultCloseFuture(open);
+ closeFuture = new DefaultCloseFuture(Test.class.getSimpleName(), open);
}
@Override
@@ -369,7 +369,7 @@ public class AbstractSessionTest extends BaseTestSupport {
throw new WriteAbortedException("Failed to offer outgoing buffer", new IllegalStateException("Offer failure"));
}
- IoWriteFutureImpl future = new IoWriteFutureImpl(buffer);
+ IoWriteFutureImpl future = new IoWriteFutureImpl(Test.class.getSimpleName(), buffer);
future.setValue(Boolean.TRUE);
return future;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
index f8f5a0d..6bea23b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/util/closeable/CloseableUtilsTest.java
@@ -110,9 +110,9 @@ public class CloseableUtilsTest extends BaseTestSupport {
@Test
public void testCloseImmediateCalledAndWait() throws Exception {
- final DefaultCloseFuture future = new DefaultCloseFuture(this);
- final AtomicInteger callsCount = new AtomicInteger(0);
- final Closeable closeable = new IoBaseCloseable() {
+ DefaultCloseFuture future = new DefaultCloseFuture(this, this);
+ AtomicInteger callsCount = new AtomicInteger(0);
+ Closeable closeable = new IoBaseCloseable() {
@Override
public CloseFuture close(boolean immediately) {
assertTrue("Closure is not immediate", immediately);
@@ -140,6 +140,7 @@ public class CloseableUtilsTest extends BaseTestSupport {
return false;
}
};
+
ExecutorService service = ThreadUtils.newSingleThreadExecutor(getCurrentTestName());
try {
Future<?> task = service.submit((Runnable) () -> {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java b/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
index 4e8e11d..3224913 100644
--- a/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
+++ b/sshd-core/src/test/java/org/apache/sshd/deprecated/ClientUserAuthServiceOld.java
@@ -75,7 +75,7 @@ public class ClientUserAuthServiceOld extends AbstractCloseable implements Servi
session = (ClientSessionImpl) s;
lock = session.getLock();
// Maintain the current auth status in the authFuture.
- authFuture = new DefaultAuthFuture(lock);
+ authFuture = new DefaultAuthFuture(s.toString(), lock);
}
@Override
@@ -150,7 +150,7 @@ public class ClientUserAuthServiceOld extends AbstractCloseable implements Servi
// Set up the next round of authentication. Each round gets a new lock.
this.userAuth = userAuth;
// The new future !isDone() - i.e., in progress blocking out other waits.
- this.authFuture = new DefaultAuthFuture(lock);
+ this.authFuture = new DefaultAuthFuture(getClass().getSimpleName(), lock);
log.debug("ready to try authentication with new lock");
return true;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/util/test/AsyncEchoShellFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/AsyncEchoShellFactory.java b/sshd-core/src/test/java/org/apache/sshd/util/test/AsyncEchoShellFactory.java
index b0ff4bb..67d1516 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/AsyncEchoShellFactory.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/AsyncEchoShellFactory.java
@@ -99,12 +99,12 @@ public class AsyncEchoShellFactory implements Factory<Command> {
@Override
public void setIoOutputStream(IoOutputStream out) {
- this.out = new BufferedIoOutputStream(out);
+ this.out = new BufferedIoOutputStream("STDOUT", out);
}
@Override
public void setIoErrorStream(IoOutputStream err) {
- this.err = new BufferedIoOutputStream(err);
+ this.err = new BufferedIoOutputStream("STDERR", err);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/693fa5d9/sshd-core/src/test/java/org/apache/sshd/util/test/BogusChannel.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/BogusChannel.java b/sshd-core/src/test/java/org/apache/sshd/util/test/BogusChannel.java
index 96bb36d..afab75d 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/BogusChannel.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/BogusChannel.java
@@ -50,7 +50,7 @@ public class BogusChannel extends AbstractChannel {
@Override
public OpenFuture open(int recipient, long rwsize, long rmpsize, Buffer buffer) {
- return new DefaultOpenFuture(this.lock);
+ return new DefaultOpenFuture(this, this.lock);
}
@Override