Skip to content

Commit c557eb0

Browse files
add thiserror crate to derive fmt::Display
1 parent 11d9c40 commit c557eb0

7 files changed

Lines changed: 95 additions & 150 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/bridge/shared/src/ffi/storage.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl IdentityKeyStore for &FfiIdentityKeyStoreStruct {
6363
if let Some(error) = CallbackError::check(result) {
6464
return Err(SignalProtocolError::ApplicationCallbackError(
6565
"get_identity_key_pair",
66-
Box::new(error),
66+
CallbackErrorWrapper(Box::new(error)),
6767
));
6868
}
6969

@@ -85,7 +85,7 @@ impl IdentityKeyStore for &FfiIdentityKeyStoreStruct {
8585
if let Some(error) = CallbackError::check(result) {
8686
return Err(SignalProtocolError::ApplicationCallbackError(
8787
"get_local_registration_id",
88-
Box::new(error),
88+
CallbackErrorWrapper(Box::new(error)),
8989
));
9090
}
9191

@@ -106,7 +106,9 @@ impl IdentityKeyStore for &FfiIdentityKeyStoreStruct {
106106
1 => Ok(true),
107107
r => Err(SignalProtocolError::ApplicationCallbackError(
108108
"save_identity",
109-
Box::new(CallbackError::check(r).expect("verified non-zero")),
109+
CallbackErrorWrapper(Box::new(
110+
CallbackError::check(r).expect("verified non-zero"),
111+
)),
110112
)),
111113
}
112114
}
@@ -136,7 +138,9 @@ impl IdentityKeyStore for &FfiIdentityKeyStoreStruct {
136138
1 => Ok(true),
137139
r => Err(SignalProtocolError::ApplicationCallbackError(
138140
"is_trusted_identity",
139-
Box::new(CallbackError::check(r).expect("verified non-zero")),
141+
CallbackErrorWrapper(Box::new(
142+
CallbackError::check(r).expect("verified non-zero"),
143+
)),
140144
)),
141145
}
142146
}
@@ -153,7 +157,7 @@ impl IdentityKeyStore for &FfiIdentityKeyStoreStruct {
153157
if let Some(error) = CallbackError::check(result) {
154158
return Err(SignalProtocolError::ApplicationCallbackError(
155159
"get_identity",
156-
Box::new(error),
160+
CallbackErrorWrapper(Box::new(error)),
157161
));
158162
}
159163

@@ -204,7 +208,7 @@ impl PreKeyStore for &FfiPreKeyStoreStruct {
204208
if let Some(error) = CallbackError::check(result) {
205209
return Err(SignalProtocolError::ApplicationCallbackError(
206210
"load_pre_key",
207-
Box::new(error),
211+
CallbackErrorWrapper(Box::new(error)),
208212
));
209213
}
210214

@@ -228,7 +232,7 @@ impl PreKeyStore for &FfiPreKeyStoreStruct {
228232
if let Some(error) = CallbackError::check(result) {
229233
return Err(SignalProtocolError::ApplicationCallbackError(
230234
"store_pre_key",
231-
Box::new(error),
235+
CallbackErrorWrapper(Box::new(error)),
232236
));
233237
}
234238

@@ -246,7 +250,7 @@ impl PreKeyStore for &FfiPreKeyStoreStruct {
246250
if let Some(error) = CallbackError::check(result) {
247251
return Err(SignalProtocolError::ApplicationCallbackError(
248252
"remove_pre_key",
249-
Box::new(error),
253+
CallbackErrorWrapper(Box::new(error)),
250254
));
251255
}
252256

@@ -289,7 +293,7 @@ impl SignedPreKeyStore for &FfiSignedPreKeyStoreStruct {
289293
if let Some(error) = CallbackError::check(result) {
290294
return Err(SignalProtocolError::ApplicationCallbackError(
291295
"load_signed_pre_key",
292-
Box::new(error),
296+
CallbackErrorWrapper(Box::new(error)),
293297
));
294298
}
295299

@@ -314,7 +318,7 @@ impl SignedPreKeyStore for &FfiSignedPreKeyStoreStruct {
314318
if let Some(error) = CallbackError::check(result) {
315319
return Err(SignalProtocolError::ApplicationCallbackError(
316320
"store_signed_pre_key",
317-
Box::new(error),
321+
CallbackErrorWrapper(Box::new(error)),
318322
));
319323
}
320324

@@ -357,7 +361,7 @@ impl SessionStore for &FfiSessionStoreStruct {
357361
if let Some(error) = CallbackError::check(result) {
358362
return Err(SignalProtocolError::ApplicationCallbackError(
359363
"load_session",
360-
Box::new(error),
364+
CallbackErrorWrapper(Box::new(error)),
361365
));
362366
}
363367

@@ -382,7 +386,7 @@ impl SessionStore for &FfiSessionStoreStruct {
382386
if let Some(error) = CallbackError::check(result) {
383387
return Err(SignalProtocolError::ApplicationCallbackError(
384388
"store_session",
385-
Box::new(error),
389+
CallbackErrorWrapper(Box::new(error)),
386390
));
387391
}
388392

@@ -434,7 +438,7 @@ impl SenderKeyStore for &FfiSenderKeyStoreStruct {
434438
if let Some(error) = CallbackError::check(result) {
435439
return Err(SignalProtocolError::ApplicationCallbackError(
436440
"store_sender_key",
437-
Box::new(error),
441+
CallbackErrorWrapper(Box::new(error)),
438442
));
439443
}
440444

@@ -460,7 +464,7 @@ impl SenderKeyStore for &FfiSenderKeyStoreStruct {
460464
if let Some(error) = CallbackError::check(result) {
461465
return Err(SignalProtocolError::ApplicationCallbackError(
462466
"load_sender_key",
463-
Box::new(error),
467+
CallbackErrorWrapper(Box::new(error)),
464468
));
465469
}
466470

rust/bridge/shared/src/jni/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ fn throw_error(env: &JNIEnv, error: SignalJniError) {
8383
let error = match error {
8484
SignalJniError::Signal(SignalProtocolError::ApplicationCallbackError(
8585
callback,
86-
exception,
86+
CallbackErrorWrapper(exception),
8787
)) => {
8888
// The usual way to write this code would be to match on the result of Error::downcast.
8989
// However, the "failure" result, which is intended to return the original type back,
@@ -99,7 +99,8 @@ fn throw_error(env: &JNIEnv, error: SignalJniError) {
9999

100100
// Fall through to generic handling below.
101101
SignalJniError::Signal(SignalProtocolError::ApplicationCallbackError(
102-
callback, exception,
102+
callback,
103+
CallbackErrorWrapper(exception),
103104
))
104105
}
105106

@@ -366,7 +367,7 @@ pub fn call_method_checked<'a, O: Into<JObject<'a>>, R: TryFrom<JValue<'a>>>(
366367

367368
Err(SignalProtocolError::ApplicationCallbackError(
368369
fn_name,
369-
Box::new(ThrownException::new(env, throwable)?),
370+
CallbackErrorWrapper(Box::new(ThrownException::new(env, throwable)?)),
370371
)
371372
.into())
372373
}

rust/bridge/shared/src/node/error.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,5 +174,8 @@ impl std::error::Error for CallbackError {}
174174

175175
/// Converts a JavaScript error message to a [`SignalProtocolError::ApplicationCallbackError`].
176176
pub fn js_error_to_rust(func: &'static str, err: String) -> SignalProtocolError {
177-
SignalProtocolError::ApplicationCallbackError(func, Box::new(CallbackError::new(err)))
177+
SignalProtocolError::ApplicationCallbackError(
178+
func,
179+
CallbackErrorWrapper(Box::new(CallbackError::new(err))),
180+
)
178181
}

rust/protocol/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (C) 2020 Signal Messenger, LLC.
2+
# Copyright (C) 2020-2021 Signal Messenger, LLC.
33
# SPDX-License-Identifier: AGPL-3.0-only
44
#
55

@@ -28,6 +28,7 @@ hex = "0.4"
2828
log = "0.4"
2929
num_enum = "0.5.1"
3030
uuid = "0.8"
31+
thiserror = "1.0.24"
3132

3233
[dependencies.curve25519-dalek]
3334
features = ["serde", "alloc"]

0 commit comments

Comments
 (0)