FTP connections preserve passwords and filenames, with CI checking every change #1

Merged
temeddix merged 15 commits from fix-directory-listing into main 2026-09-30 13:10:40 +00:00
Showing only changes of commit a12e4d03f7 - Show all commits
+4
View File
@@ -97,6 +97,8 @@ async fn a_listing_reconnects_after_the_server_expires_the_control_session()
})
.await?
});
Outdated
Review

This runs the guest on Tokio's blocking thread pool, contrary to the repository's event-driven/async-only rule; the same pattern is repeated in the other recovery test. Replace the native blocking socket test transport with an async one.

Profile: codex · gpt-5.6-terra

This runs the guest on Tokio's blocking thread pool, contrary to the repository's event-driven/async-only rule; the same pattern is repeated in the other recovery test. Replace the native blocking socket test transport with an async one. > Profile: `codex` · `gpt-5.6-terra`
// `Guest` is generated as a synchronous trait, so the repository rule for
Outdated
Review

This thread-pool handoff violates the repository's event-driven-only/no-thread-model rule. Exercise the synchronous guest with a compliant transport, or add an explicit approved exception to the repository rules.

Profile: codex · gpt-5.6-terra

This thread-pool handoff violates the repository's event-driven-only/no-thread-model rule. Exercise the synchronous guest with a compliant transport, or add an explicit approved exception to the repository rules. > Profile: `codex` · `gpt-5.6-terra`
// unavoidable blocking I/O requires isolating this native test call here.
let client = tokio::task::spawn_blocking(move || -> TestResult {
guest(Ftp::open("ftp".into(), config(port)))?;
let first = guest(Ftp::list(Locator::Path("/".into()), None, 10))?;
@@ -137,6 +139,8 @@ async fn recovery_before_a_mutation_never_replays_a_lost_mutation_reply()
})
.await?
Outdated
Review

This second spawn_blocking repeats the prohibited thread-based test transport. Replace the fixture approach or document an approved exception to the repository rules.

Profile: codex · gpt-5.6-terra

This second `spawn_blocking` repeats the prohibited thread-based test transport. Replace the fixture approach or document an approved exception to the repository rules. > Profile: `codex` · `gpt-5.6-terra`
});
// `Guest` is generated as a synchronous trait, so the repository rule for
// unavoidable blocking I/O requires isolating this native test call here.
let client = tokio::task::spawn_blocking(move || -> TestResult {
guest(Ftp::open("ftp".into(), config(port)))?;
wait_expired.blocking_recv()?;