diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index e37bde1370..24c25b96ec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -38,6 +38,7 @@ import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Scrubber; import org.signal.core.util.tracing.Tracer; import org.signal.glide.SignalGlideCodecs; +import org.signal.libsignal.net.ChatServiceException; import org.signal.libsignal.protocol.logging.SignalProtocolLoggerProvider; import org.signal.ringrtc.CallManager; import org.thoughtcrime.securesms.apkupdate.ApkUpdateRefreshListener; @@ -363,7 +364,7 @@ public class ApplicationContext extends Application implements AppForegroundObse e = e.getCause(); } - if (wasWrapped && (e instanceof SocketException || e instanceof InterruptedException || e instanceof InterruptedIOException)) { + if (wasWrapped && (e instanceof SocketException || e instanceof InterruptedException || e instanceof InterruptedIOException || e instanceof ChatServiceException)) { return; } diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/websocket/LibSignalChatConnection.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/websocket/LibSignalChatConnection.kt index 64d1bdce36..2fc5266d8c 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/websocket/LibSignalChatConnection.kt +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/websocket/LibSignalChatConnection.kt @@ -498,6 +498,7 @@ class LibSignalChatConnection( } } + @Throws(IOException::class) override fun sendResponse(response: WebSocketResponseMessage) { if (response.status == 200 && response.message.equals("OK")) { ackSenderForInternalPseudoId[response.id]?.send() ?: Log.w(TAG, "$name [sendResponse] Silently dropped response without available ackSend {id: ${response.id}}") @@ -554,8 +555,10 @@ class LibSignalChatConnection( else -> disconnectReason } - for (pendingResponse in pendingResponses) { - pendingResponse.onError(downstreamThrowable) + synchronized(pendingResponses) { + for (pendingResponse in pendingResponses) { + pendingResponse.onError(downstreamThrowable) + } } } chatConnection = null