From e34ebce6d26b46e98d3660194608180a48cf3631 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 16 Nov 2020 21:04:56 +0100 Subject: [PATCH] When a smartcard error occurs, disconnect to avoid sticky errors. --- multipass.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 })); -- 2.39.2