This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git


The following commit(s) were added to refs/heads/master by this push:
     new 2406cbe37 Prepare 2.10.0 release
2406cbe37 is described below

commit 2406cbe379bbcfd0f58a961d6ced03f9b9f4ee4e
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Wed May 10 08:01:49 2023 +0200

    Prepare 2.10.0 release
---
 CHANGES.md                           | 181 +----------------------------------
 CHANGES.md => docs/changes/2.10.0.md |  25 +----
 2 files changed, 4 insertions(+), 202 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index 9ac705e6e..00396183f 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -20,184 +20,7 @@
 
 # [Version 2.9.1 to 2.9.2](./docs/changes/2.9.2.md)
 
-# Planned for next version
-
-## Bug fixes
-
-* [GH-268](https://github.com/apache/mina-sshd/issues/268) (Regression in 
2.9.0) Heartbeat should throw an exception if no reply arrives within the 
timeout.
-* [GH-275](https://github.com/apache/mina-sshd/issues/275) SFTP: be more 
lenient when reading `SSH_FXP_STATUS` replies.
-* [GH-281](https://github.com/apache/mina-sshd/issues/281) Use OpenSSH 
first-match semantics for processing HostConfigEntries.
-* [GH-282](https://github.com/apache/mina-sshd/issues/282) Correct setting 
file permissions on newly written host key files on Windows.
-* [GH-283](https://github.com/apache/mina-sshd/issues/283) Fix handling of 
`CoreModuleProperties.PASSWORD_PROMPTS`.
-* [GH-285](https://github.com/apache/mina-sshd/issues/285) Fix compilation 
failure on Java 19.
-* [GH-293](https://github.com/apache/mina-sshd/issues/293) Handle SFTP buffer 
sizes larger than the server limit better.
-* [GH-294](https://github.com/apache/mina-sshd/issues/294) Fix memory leak in 
`SftpFileSystemProvider`.
-* [GH-297](https://github.com/apache/mina-sshd/issues/297) Auto-configure file 
password provider for reading encrypted SSH keys.
-* [GH-298](https://github.com/apache/mina-sshd/issues/298) Server side 
heartbeat not working.
-* [GH-300](https://github.com/apache/mina-sshd/issues/300) Read the channel id 
in `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` as unsigned int.
-* [GH-313](https://github.com/apache/mina-sshd/issues/313) Log exceptions in 
the SFTP subsystem before sending a failure status reply.
-* [GH-322](https://github.com/apache/mina-sshd/issues/322) Add basic Android 
O/S awareness.
-* [GH-325](https://github.com/apache/mina-sshd/issues/325) 
`SftpFileSystemProvider`: fix deletions of symlinks through `Files.delete()`.
-* [GH-364](https://github.com/apache/mina-sshd/issues/364) 
`AbstractAgentClient`: respect flags for RSA signature requests.
-
-
-* [SSHD-1295](https://issues.apache.org/jira/browse/SSHD-1295) Fix 
cancellation of futures and add options to cancel futures on time-outs.
-* [SSHD-1315](https://issues.apache.org/jira/browse/SSHD-1315) Do not log 
sensitive data at log level `TRACE`.
-* [SSHD-1316](https://issues.apache.org/jira/browse/SSHD-1316) Possible OOM in 
`ChannelPipedInputStream` (fix channel window).
-* [SSHD-1319](https://issues.apache.org/jira/browse/SSHD-1319) Use position in 
`SftpRemotePathChannel.transferFrom()`.
-
-## Major code re-factoring
-
-## Potential compatibility issues
-
-### Futures and cancellation or time-outs
-
-Apache MINA sshd is an asynchronous framework: for long-running operations, and
-in particular operations involving network communication, the API returns a
-future that client code can use to wait until the operation is complete. 
Waiting
-on a future is usually done with a `future.verify()` or 
`future.verify(timeout)`
-call. Futures can also be canceled.
-
-Previous versions did not implement cancellation correctly: while the future
-object itself was marked as "canceled", the underlying operation was not. The
-same problem also existed for time-outs: when `future.verify(timeout)` timed 
out,
-the underlying operation still continued to run asynchronously. This could
-lead to problems because if the underlying operation eventually succeeded,
-application code would be completely unaware. For instance in
-
-```
-  ClientSession session = client.connect(user, host, 
port).verify(timeout).getSession();
-```
-
-the application might get a time-out, but the underlying connect operation
-would continue to run, might succeed eventually, and then there would in fact
-be a `ClientSession` (and thus also a network connection, and a socket used 
up).
-But the application had no way to access that session to shut it down. The net
-effect was a socket leak.
-
-In this version, this has been corrected. By default, the future is canceled
-when a time-out occurs, and `future.cancel()` is propagated to the underlying
-operation and cancels it.
-
-Canceling an operation itself may not be possible immediately. For instance,
-an authentication attempt is a message exchange with the server. If the
-authentication request has already been sent when cancellation is requested,
-the sending of that request cannot be undone. The authentication can only be
-cancelled after the reply from the server has been received, and if that reply
-is an authentication success, cancellation isn't even possible anymore. Or
-consider requesting a port forwarding: that, too, is a request-reply message
-exchange. Once the request has been sent, there are two cases: if the server
-replies with a failure message, the port forwarding failed and since there is
-nothing to cancel, cancellation is not possible. If the reply indicates the
-tunnel was established, but `future.cancel()` had already been called, we have
-two options: either we shut down the just established tunnel again and say
-cancellation succeeded, or we say cancellation failed and report a successfully
-established tunnel. Because cancellations may be caused by time-outs, Apache
-MINA sshd chooses the first option and shuts down the tunnel again. Otherwise
-an application might get a time-out but still be left with an established
-tunnel.
-
-Cancellation is only possible while the operation has not completed yet. If
-a future is already done, it cannot be canceled anymore.
+# [Version 2.9.2 to 2.10.0](./docs/changes/2.10.0.md)
 
-The `cancel()` operation on a future is thus a _request_ to cancel the
-operation; it may or may not result in actually cancelling the operation.
-`cancel()` itself therefore returns a `CancelFuture` that client code can use
-to wait for the request having been handled, and then learn whether the
-operation was indeed canceled.
-
-Calls to `verify()` throw an `SshException` with a
-`java.util.concurrent.CancellationException` as cause if cancelled 
asynchronously
-via the `cancel()` method.
-
-Application code can control the behavior on time-outs. The `verify()` method
-takes besides a time-out duration newly also a number of `CancelOption`s as
-parameters.
-
-There are three possible values to cancel on a time-out, to cancel on an
-interruption, or not to cancel at all when either occurs. For backwards
-compatibility, the default behavior of `AuthFuture` and of `OpenFuture` is
-unchanged: to cancel on a time-out, client code must pass the
-`CancelOption.CANCEL_ON_TIMEOUT` flag.
-
-The default behavior of `ConnectFuture` _has_ been changed: by default, it 
_does_
-cancel the connection attempt if a time-out occurs. To avoid this, client code
-would have to pass the `CancelOption.NO_CANCELLATION` flag expressly. This 
change
-in behavior was done to avoid socket leaks, and it was deemed acceptable since
-a difference in behavior could only occur if existing client code called
-`AuthFuture.verify()` in different threads on the same future instance, or
-sequentially on the same future instance again after the first time-out. Both
-cases are highly unlikely to occur in existing client code. If existing code
-needs this behavior, it needs to be adapted to pass `CancelOption`s as may be
-appropriate for the precise use case.
-
-## Minor code helpers
-
-## Behavioral changes and enhancements
-
-* Support for reading SSH keys from PEM files containing encrypted private keys
-  [RFC 5958, EncryptedPrivateKeyInfo](https://www.rfc-editor.org/rfc/rfc5958) 
has
-  been added. Such PEM files start with `-----BEGIN ENCRYPTED PRIVATE 
KEY-----`.
-  Reading and decrypting keys from such files requires Bouncy Castle to be
-  present.
-* Support reading SSH keys from PEM files starting with
-  `-----BEGIN ED25519 PRIVATE KEY-----`. Some OpenSSL versions could produce 
such
-  files when the user specified "traditional" PEM output. (Encrypted keys 
written
-  using [RFC 1421](https://www.rfc-editor.org/rfc/rfc1421) encryption.) Modern
-  OpenSSL refuses to create such PEM files; it always uses PKCS#8 (RFC 5958) 
style
-  PEM files for EdDSA keys.
-* Support reading encrypted private keys in openSSH format that have been
-  encrypted with an AEAD cipher.
-* `CoreModuleProperties.PASSWORD_PROMPTS` is now also used for password
-  authentication. Previous versions used it only for keyboard-interactive
-  authentication. The semantics has been clarified to be the equivalent
-  of the OpenSSH configuration `NumberOfPasswordPrompts`, which is actually
-  the number of authentication *attempts*. (In keyboard-interactive
-  authentication, there may be several prompts per authentication attempt.)
-  Only interactive authentication attempts using `UserInteraction` count
-  towards the limit. Attempts fulfilled by explicitly provided passwords
-  (via `session.addPasswordIdentity()` or 
`session.setPasswordIdentityProvider()`)
-  are *not* counted. The default value of the property is unchanged and is
-  3, as in OpenSSH. The limit is applied independently for both authentication
-  mechanisms: with the default setting, there can be three keyboard-interactive
-  authentication attempts, plus three more password authentication attempts if
-  both methods are configured and applicable.
-
-### Connection time-outs
-
-Connection time-outs are normally handled in Apache MINA SSHD at the 
application
-level by passing a time-out to `ConnectFuture.verify()`:
-
-```
-ClientSession session = client.connect(user, host, 
port).verify(MY_TIMEOUT).getSession();
-```
-
-However, the actual I/O library used might have its own connection time-out.
-With large time-outs, the behavior depended on the actual implementation of
-the I/O back-end used:
-
-* The default NIO2 back-end has no default connection time-out at all, so the
-  `verify(MY_TIMEOUT)` call would always time-out after `MY_TIMEOUT` had 
elapsed.
-* Apache MINA has a default connection time-out of one minute, so even if
-  `MY_TIMEOUT` was larger, the time-out would still occur after one minute.
-* Netty has a default connection time-out of 30 seconds.
-
-In this version, a new property `CoreModuleProperties.IO_CONNECTION_TIMEOUT`
-can be set to control this I/O connection time-out. It can be set on an
-`SshClient` or `SshServer`; if set (and > 0), the I/O back-end is configured
-to use that value as its I/O connection time-out, and
-`ConnectFuture.verify(MY_TIMEOUT)` will always time-out at
-`Math.min(CoreModuleProperties.IO_CONNECTION_TIMEOUT, MY_TIMEOUT)`. The 
property
-is also effective for the NIO2 back-end; the default value is 1 minute.
-
-`verify()` throws an `SshException` if it fails or times out. The _cause_ of
-that exception is a `java.net.ConnectException` if the I/O connection time-out
-expired, and a `java.util.concurrent.TimeoutException` if the application
-time-out expired. (And if the future was canceled explicitly before any
-time-out was reached, the cause is a 
`java.util.concurrent.CancellationException`;
-see above.)
+# Planned for next version
 
-The new `CancelOption`s discussed above apply only if the application
-time-out expires. If the connection attempt times out at I/O level, it is
-the responsibility of the I/O library to ensure no resources such as
-sockets are consumed, and there is no SSH session created either.
diff --git a/CHANGES.md b/docs/changes/2.10.0.md
similarity index 94%
copy from CHANGES.md
copy to docs/changes/2.10.0.md
index 9ac705e6e..92b0ceee0 100644
--- a/CHANGES.md
+++ b/docs/changes/2.10.0.md
@@ -1,26 +1,4 @@
-# [Version 2.1.0 to 2.2.0](./docs/changes/2.2.0.md)
-
-# [Version 2.2.0 to 2.3.0](./docs/changes/2.3.0.md)
-
-# [Version 2.3.0 to 2.4.0](./docs/changes/2.4.0.md)
-
-# [Version 2.4.0 to 2.5.0](./docs/changes/2.5.0.md)
-
-# [Version 2.5.0 to 2.5.1](./docs/changes/2.5.1.md)
-
-# [Version 2.5.1 to 2.6.0](./docs/changes/2.6.0.md)
-
-# [Version 2.6.0 to 2.7.0](./docs/changes/2.7.0.md)
-
-# [Version 2.7.0 to 2.8.0](./docs/changes/2.8.0.md)
-
-# [Version 2.8.0 to 2.9.0](./docs/changes/2.9.0.md)
-
-# [Version 2.9.0 to 2.9.1](./docs/changes/2.9.1.md)
-
-# [Version 2.9.1 to 2.9.2](./docs/changes/2.9.2.md)
-
-# Planned for next version
+# Introduced in 2.10.0
 
 ## Bug fixes
 
@@ -201,3 +179,4 @@ The new `CancelOption`s discussed above apply only if the 
application
 time-out expires. If the connection attempt times out at I/O level, it is
 the responsibility of the I/O library to ensure no resources such as
 sockets are consumed, and there is no SSH session created either.
+

Reply via email to