Revision history for Net-LibSSH

0.003     2026-09-01 00:06:26Z
  - 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

0.002     2026-03-29 14:49:04Z
  - Refactor XS internals: replace sv_setref_pv/DESTROY with
    sv_magicext + MGVTBL (svt_free) for automatic GC-driven cleanup
  - Typemap INPUT now uses mg_findext with type-specific vtable pointer
    for strict type checking at the XS boundary
  - No user-visible behaviour change

0.001     2026-03-29 02:46:04Z
  - Initial release
  - Session: connect, auth_password, auth_publickey, auth_agent
  - Channel: exec, read, write, eof, exit_status
  - SFTP: stat (graceful undef when SFTP subsystem absent)
