From 3b36cb6c7879128f7d05c01f1bd5c05d4e51399d Mon Sep 17 00:00:00 2001 From: Kornel Date: Wed, 27 Nov 2024 16:50:07 +0000 Subject: [PATCH] Detailed error codes --- boring/src/error.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/boring/src/error.rs b/boring/src/error.rs index fdc3ba9e..9cdc878b 100644 --- a/boring/src/error.rs +++ b/boring/src/error.rs @@ -182,6 +182,12 @@ impl Error { } } + /// Returns the raw OpenSSL error constant for the library reporting the + /// error. + pub fn library_code(&self) -> libc::c_int { + ffi::ERR_GET_LIB(self.code) + } + /// Returns the name of the function reporting the error. pub fn function(&self) -> Option<&'static str> { unsafe { @@ -206,6 +212,11 @@ impl Error { } } + /// Returns the raw OpenSSL error constant for the reason for the error. + pub fn reason_code(&self) -> libc::c_int { + ffi::ERR_GET_REASON(self.code) + } + /// Returns the name of the source file which encountered the error. pub fn file(&self) -> &'static str { unsafe { @@ -235,12 +246,14 @@ impl fmt::Debug for Error { if let Some(library) = self.library() { builder.field("library", &library); } + builder.field("library_code", &self.library_code()); if let Some(function) = self.function() { builder.field("function", &function); } if let Some(reason) = self.reason() { builder.field("reason", &reason); } + builder.field("reason_code", &self.reason_code()); builder.field("file", &self.file()); builder.field("line", &self.line()); if let Some(data) = self.data() {