Changes for version 0.003 - 2026-09-01

  • SFTP integration test now stats /etc/passwd instead of /etc/hostname, so it passes on FreeBSD smokers where /etc/hostname does not exist (GH #1)
  • connect() on a session that has already been disconnected now returns 0 immediately, with error() saying the session was disconnected and cannot be reconnected — instead of waiting out the connection timeout for libssh's misleading "Timeout connecting to ..."; disconnect() on a session that was never connected still leaves it connectable
  • Channel methods (exec, read, write, send_eof, eof, exit_status) now croak instead of operating on a closed channel; close() stays idempotent
  • Fix segfault when a channel or SFTP session is used after the session variable it was opened on has been undef-ed or reassigned; the session now stays alive until the last object opened on it is gone
  • Fix segfault when a channel or SFTP session is used, or merely dropped, after disconnect(); ssh_disconnect() frees those objects inside libssh, so they are now invalidated instead of left dangling. Their methods croak with "session was disconnected", close() on such a channel stays a harmless no-op, and nothing is leaked on the way

Modules

Perl binding for libssh — SSH without SFTP dependency
SSH exec channel for Net::LibSSH
Optional SFTP session for Net::LibSSH