diff --git a/cryptoki/src/session/session_management.rs b/cryptoki/src/session/session_management.rs index 40839ad7..eb96b0f1 100644 --- a/cryptoki/src/session/session_management.rs +++ b/cryptoki/src/session/session_management.rs @@ -3,14 +3,14 @@ //! Session management functions use crate::context::Function; -use crate::error::{Result, Rv}; +use crate::error::{Error, Result, Rv, RvError}; use crate::session::{Session, SessionInfo, UserType}; use crate::types::{AuthPin, RawAuthPin}; #[cfg(doc)] use cryptoki_sys::CKF_PROTECTED_AUTHENTICATION_PATH; use cryptoki_sys::CK_SESSION_INFO; -use log::error; +use log::{error, warn}; use secrecy::ExposeSecret; use std::convert::{TryFrom, TryInto}; @@ -27,7 +27,12 @@ impl Drop for Session { } if let Err(err) = close(self) { - error!("Failed to close session: {err}"); + match err { + Error::Pkcs11(RvError::SessionHandleInvalid, _) => { + warn!("Failed to close session: The specified session handle is invalid, the session must be already closed."); + } + _ => error!("Failed to close session: {err}"), + } } } }