From 029dc6af4b3446edad9d325b70f88ac59db29aa3 Mon Sep 17 00:00:00 2001 From: Gabriel Smith Date: Sun, 1 Mar 2026 16:12:27 -0500 Subject: [PATCH 1/3] add formerly implicit lifetimes --- src/channel.rs | 4 ++-- src/session.rs | 4 ++-- src/sftp.rs | 4 ++-- src/util.rs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/channel.rs b/src/channel.rs index d695586d4..ccd2912af 100644 --- a/src/channel.rs +++ b/src/channel.rs @@ -65,7 +65,7 @@ impl Channel { } } - fn lock(&self) -> LockedChannel { + fn lock(&self) -> LockedChannel<'_> { let sess = self.channel_inner.sess.lock(); LockedChannel { sess, @@ -519,7 +519,7 @@ impl Drop for ChannelInner { } impl Stream { - fn lock(&self) -> LockedStream { + fn lock(&self) -> LockedStream<'_> { let sess = self.channel_inner.sess.lock(); LockedStream { sess, diff --git a/src/session.rs b/src/session.rs index 6775c9ec6..70325a0d4 100644 --- a/src/session.rs +++ b/src/session.rs @@ -175,7 +175,7 @@ impl Session { } #[doc(hidden)] - pub fn raw(&self) -> MappedMutexGuard { + pub fn raw(&self) -> MappedMutexGuard<'_, raw::LIBSSH2_SESSION> { let inner = self.inner(); MutexGuard::map(inner, |inner| unsafe { &mut *inner.raw }) } @@ -1113,7 +1113,7 @@ impl Session { } } - fn inner(&self) -> MutexGuard { + fn inner(&self) -> MutexGuard<'_, SessionInner> { self.inner.lock() } diff --git a/src/sftp.rs b/src/sftp.rs index 6299cbdfa..31184f456 100644 --- a/src/sftp.rs +++ b/src/sftp.rs @@ -435,7 +435,7 @@ impl Sftp { }) } - fn lock(&self) -> Result { + fn lock(&self) -> Result, Error> { match self.inner.as_ref() { Some(sftp_inner_drop_wrapper) => { let sftp_inner = sftp_inner_drop_wrapper @@ -658,7 +658,7 @@ impl File { self.rc(&locked, unsafe { raw::libssh2_sftp_fsync(locked.raw) }) } - fn lock(&self) -> Result { + fn lock(&self) -> Result, Error> { match self.inner.as_ref() { Some(file_inner) => { let sftp_inner = file_inner.sftp.0.as_ref().expect( diff --git a/src/util.rs b/src/util.rs index 258aa59c8..2a0adc62e 100644 --- a/src/util.rs +++ b/src/util.rs @@ -4,14 +4,14 @@ use std::path::Path; use {raw, Error, ErrorCode}; #[cfg(unix)] -pub fn path2bytes(p: &Path) -> Result, Error> { +pub fn path2bytes(p: &Path) -> Result, Error> { use std::ffi::OsStr; use std::os::unix::prelude::*; let s: &OsStr = p.as_ref(); check(Cow::Borrowed(s.as_bytes())) } #[cfg(windows)] -pub fn path2bytes(p: &Path) -> Result, Error> { +pub fn path2bytes(p: &Path) -> Result, Error> { p.to_str() .map(|s| s.as_bytes()) .ok_or_else(|| { From 71e14275e6c8fcbeaf723c3391ff2713f4658a6d Mon Sep 17 00:00:00 2001 From: Gabriel Smith Date: Sun, 1 Mar 2026 16:17:42 -0500 Subject: [PATCH 2/3] ci: remove old runners and add new replacements --- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 7ef1dd7c7..c6d159061 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04] + os: [ubuntu-22.04, ubuntu-24.04] rust_toolchain: [stable, beta] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f527046bf..1e1c92466 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-13, macos-14] + os: [macos-14, macos-15, macos-26] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f1770f37b..eb7ea25bb 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-2019, windows-2022] + os: [windows-2022, windows-2025] env: - TARGET: x86_64-pc-windows-msvc - TARGET: i686-pc-windows-msvc From 6cae45a0f2129b5ef6cc1b979f21b9de930373fe Mon Sep 17 00:00:00 2001 From: Gabriel Smith Date: Mon, 2 Mar 2026 22:41:21 -0500 Subject: [PATCH 3/3] windows: link against advapi32 Per https://github.com/rust-lang/git2-rs/pull/1143, Rust no longer links against advapi32 for std since https://github.com/rust-lang/rust/pull/138233 so we have to do it ourselves. --- libssh2-sys/build.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/libssh2-sys/build.rs b/libssh2-sys/build.rs index c4425ee3e..9ee862fe6 100644 --- a/libssh2-sys/build.rs +++ b/libssh2-sys/build.rs @@ -109,6 +109,7 @@ fn main() { }; println!("cargo:rustc-link-lib=static={lib_prefix}ssl"); println!("cargo:rustc-link-lib=static={lib_prefix}crypto"); + println!("cargo:rustc-link-lib=advapi32"); } else { cfg.define("LIBSSH2_WINCNG", None); }