From 133b7ef3f10c07d274e388b66d28f23b0692c46c Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 1 Apr 2024 14:27:11 -0400 Subject: [PATCH] Fix multiple exception crash in rx message send flow. --- .../signalservice/api/SignalServiceMessageSender.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index 0fa2b7aaff..dea2ed7ed5 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -158,6 +158,7 @@ import javax.annotation.Nullable; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Scheduler; import io.reactivex.rxjava3.core.Single; +import io.reactivex.rxjava3.exceptions.CompositeException; import io.reactivex.rxjava3.schedulers.Schedulers; import kotlin.Unit; import okio.ByteString; @@ -2164,7 +2165,9 @@ public class SignalServiceMessageSender { .lastOrError() .blockingGet(); } catch (RuntimeException e) { - Throwable cause = e.getCause(); + Throwable cause = e instanceof CompositeException ? ((CompositeException) e).getExceptions().get(0) + : e.getCause(); + if (cause instanceof IOException) { throw (IOException) cause; } else if (cause instanceof InterruptedException) {