From: Steinar H. Gunderson Date: Mon, 16 Nov 2020 20:04:56 +0000 (+0100) Subject: When a smartcard error occurs, disconnect to avoid sticky errors. X-Git-Url: https://git.sesse.net/?p=linux-dallas-multipass;a=commitdiff_plain;h=e34ebce6d26b46e98d3660194608180a48cf3631 When a smartcard error occurs, disconnect to avoid sticky errors. --- diff --git a/multipass.rs b/multipass.rs index 073e929..8423cd9 100644 --- a/multipass.rs +++ b/multipass.rs @@ -354,7 +354,13 @@ fn run_apdu(reader_name: &str, apdus: Vec>) -> Result = Vec::new(); for apdu in apdus { - let reply = &transmit_apdu(card.as_mut().unwrap(), &apdu)?; + let reply = match transmit_apdu(card.as_mut().unwrap(), &apdu) { + Ok(r) => r, + Err(err) => { + *card = None; // Clean up. + return Err(err); + } + }; response_json.push(json!({ "apdu": reply }));