Incorrect timeout
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 32/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- rust
- Ambito
- networking
Direzione di ricerca
Inizia riproducendo il comportamento segnalato con l'esempio Rust SSH dell'issue, variando timeout_ms e la durata del comando sleep remoto. Traccia il modo in cui il timeout della sessione viene applicato durante l'esecuzione del canale e verifica che il timeout osservato si verifichi al limite configurato anziché a un suo multiplo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When setting a session timeout, the behaviour seems incorrect! Consider this code that connects via ssh and runs sleep 30 && echo DONE to sleep for 30 seconds:
let username = "...";
let ip = "...";
let password = "...";
let timeout_ms = 15_000;
let command = "sleep 30 && echo DONE"
let tcp = std::net::TcpStream::connect(format!("{ip}:22"))?;
let mut sess = Session::new()?;
sess.set_timeout(timeout_ms);
sess.set_tcp_stream(tcp);
sess.handshake()?;
sess.userauth_password(&username, &password)?;
if !sess.authenticated() {
return Err(anyhow!("Failed to connect by SSH"));
}
// Connect channel in exec mode.
let mut channel = sess.channel_session()?;
channel.handle_extended_data(ssh2::ExtendedData::Merge)?;
println!("running command: {command}");
channel.exec(command)?;
let mut output = String::new();
channel.read_to_string(&mut output)?;
channel.close()?;
channel.wait_close()?;
let exit_status = channel.exit_status()?;
sess.disconnect(
Some(DisconnectCode::ByApplication),
"Finished Running Script",
None,
)?;
println!("SUCCESS");
println!("exit code: {exit_status}");
println!("output:\n{output}");
I expect the session to timeout after 15 seconds, but instead it times out after 30 seconds! If instead we have timeout_ms = 5_000 then it times out after 15 seconds. From my experimenting I think the current (unexpected) behaviour is as follows:
If the command blocks for duation t and t < timeout then return Ok
If the command blocks for duation t and t > 3*timeout then return a timeout error at time 3*timeout.
If the command blocks for duation t and timeout < t < 3*timeout_ms then return a timeout error at time t
I'm running on windows and with ssh2-0.9.4
- Lingua principale
- Rust
- Stelle
- 571
- Fork
- 166
- Merge medio
- 1g 18h
- PR unite (30g)
- 5
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rust-lang/ssh2-rs
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
enhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di rust-lang/ssh2-rs
Issue simili
-
good first issue help wanted r-docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
servo/rust-smallvec#824 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
priority middle
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
KATO-Hiro/AtCoderClans#12940 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hurttlocker/o8#5112 ·