Skip to content
shikhar edited this page Sep 18, 2014 · 47 revisions

THIS CHANGELOG IS NO LONGER MAINTAINED

version 0.9.0

  • Throw IllegalStateException for sanity-checking instead of assert statements inside SSHClient. (GH-89)
  • Use debug rather than info logging when failing to load keys from a location in sshClient.authPublickey(user, locations...). (GH-84)
  • Possibility of ArrayIndexOutOfBoundsException on channelOutputStream.write(). (GH-99, GH-104)
  • Add 'unconfirmed writes' feature to RemoteFileOutputStream, allowing for major speedups in SFTP upload (should be at least 2x, ymmv). This is brought to you by a new parameter in the RemoteFileOutputStream constructor called maxUnconfirmedWrites, which is utilised by sftpFileTransfer.upload() with a default value of 16. (GH-97)
  • We were missing a socket flush during the initial SSH banner exchange.
  • Transport/Connection/SFTP layer timeout methods are now millisecond granularity. getTimeout()/setTimeout() are called getTimeoutMs()/setTimeoutMs() respectively.
  • Simplified the UserAuth.authenticate(..) interface by making it one-method-at-time, with the trial and error business happening in SSHClient.
  • Added UserAuth.getAllowedMethods(). (GH-106)
  • StatefulSFTPClient.cd() should not update internal cwd state if stat fails. (GH-90)
  • Potential visibility issue on some channel request info received from server like exit status. (GH-114)
  • Dependency version updates.

version 0.8.1

  • Made logs less chatty by changing some info logging to be debug logging. (GH-80)
  • Regex pattern matching for password prompt in PasswordResponseProvider. (GH-77)
  • AbstractChannel.close() should be no-op if the channel is already closed. (GH-53?)

version 0.8.0

  • Make sshClient.disconnect() no-op if already disconnected / never connected (GH-67).
  • Set default tty to vt100 for shell sessions.
  • Much improved TransferListener interface that supports immutable implementation, however as it is signfiicantly different any overridden impl will break.
  • Fix for remote max packet size when greater than MAX_INT being treated as -1. (GH-57)
  • Avoid string concat in various logging statements.
  • sftpClient.mkdirs() will not attempt to create the rightmost child 2x if there was a trailing separator in path.
  • Fix for infinite loop in buffer allocation. (GH-72)
  • SFTPFileTransfer now has a preference for whether attributes should be preserved. (GH-42)

version 0.7.0

  • OpenSSHKnownHosts re-implemented to better support the format seen in the wild, e.g. optional markers. (GH-41)
  • SocketClient made public so that SSHClient can be mocked for testing.
  • Publish sources jar. (GH-37)
  • Fixed typo on SFTPClient.getFileTansfer()
  • Removed deprecated methods on Session.Command, getOutputAsString() and getErrorAsString().
  • Window adjustments were being logged incorrectly, fixed.
  • Fix a condition where ChannelOutputStream writes or flushes may wrongly block sitting around waiting for window adjustments where none was required. Issue was observed with non-OpenSSH servers like dropbear and WinSSHD. (GH-47)
  • Fix for using sshj in OSGi. (GH-50)
  • Local port forwarding - there was no way to cleanly close the server socket. (GH-26)

version 0.6.1

  • Race condition in AbstractChannel channel requests (0.6.0 regression). (GH-36)

version 0.6.0

  • Fixed deadlock condition in AbstractChannel. (GH-27)
  • StatefulSFTPClient doesn't cwdify all commands. (GH-28)
  • Fixed bug in SFTP FileMode for AIX/Unix directory mask. (GH-31)
  • The option to use an 'upload filter' is back in SCPUploadClient. (GH-34)

version 0.5.0

  • In case of publickey authentication using a string rather than a file, prevent private key data from leaking in logs / on authentication exception. (GH-20)
  • SessionChannel#changeWindowDimensions was broken. (GH-21)
  • Prevent occasional spurious NPE when disconnecting at AbstractDirectChannel#notifyError.
  • SSHClient implements Closeable.
  • OSGi-fication. (GH-22)

version 0.4.1

  • Intermittent key exchange failures. (GH-18)
  • Support for publickey authentication from strings. (GH-16)

version 0.4.0

  • DisconnectListener callback.
  • FileTransfer interface refactored. Local source and destination paths can be any implementation of LocalSourceFile and LocalDestFile, respectively.
  • Bug in case of SCP remote path having spaces fixed.
  • Deprecated Command#getOutputAsString() and Command#getErrorAsString() -- recommend using IOUtils#pipeStream(..) instead.
  • StreamCopier interface updated, now uses builder pattern. start() to spawn, copy() to do it in current thread and block.
  • Possible to specify an alternate path separator (for Windows SFTP servers).
  • Several internal refactorings that make the library nicer...

version 0.3.1

  • stderr ChannelInputStream gets correctly notified of errors e.g. at the transport layer.
  • Added a channel.join(timeout) variant.
  • An alternate AndroidConfig to initialize SSHClient with on Android 2.3+ was added, which uses JCERandom instead of BouncyCastleRandom.
  • In SCP upload, detect when destination directory does not exist. This was previously detected as a warning (well, technically it is sent as one...) but should truly be an error. All SCP 'warnings' now treated as errors.
  • Bug with StatefulSFTPClient#put fixed - was doing a get instead of a put!
  • SessionChannel reuse now gets an explicit runtime error.

version 0.3.0

  • channel.close() method no longer called implicitly on disconnecting, because this is error prone. See updated examples.
  • Logging fix: enable filtering, previously due to misconfiguration this was hard to do.
  • Don't barf when a server sends more CHANNEL_DATA than announced. Now there is no exception in this case, but still only as much data as announced is consumed.
  • Client was still identifying as SSHJ_0_1 -- changed to SSHJ_0_3.
  • Support for SFTP versions less than 3.
  • Host based authentication - see net.schmizz.sshj.userauth.method.AuthHostbased; pass an instance to SSHClient.auth() to use.
  • Added Channel.join() to allow blocking on channel close event. Useful e.g. when waiting for a command to exit.
  • Various code cleanups.

version 0.2.3

  • In 0.2.0 DefaultModeGetter and DeaultModeSetter started throwing exception when permissions couldn't be retrieved/assigned, and this was problematic on windows so the exception has been replaced with a log message.

version 0.2.0

  • Now compiled with compiler source and target level = 6 -- JRE 6+ is required! Always was, just more explicit now.
  • New methods in SFTPClient: checking if a file/directory exists (statExistence() -- returns null on file not found); recursively create directories (mkdirs()).
  • Bug with SFTP directory listing being truncated fixed.
  • Timestamps and permissions are now preserved by default when transferring with SCP or SFTP. A bug which prevented even using the ModeGetter or ModeSetter interface for this purpose has been quashed.
  • keyboard-interactive authentication now supported. SSHClient#authPassword() attempts to use it as a fallback by default.
  • An interface has been introduced for observing progress of file transfers (TransferListener) which can be registered with any FileTransfer implementation (i.e. SCPFileTransfer; SFTPFileTransfer).
  • Various bugfixes and improvements.