diff --git a/app/build.gradle b/app/build.gradle index f4f0ad90e2..cce7f59962 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -154,7 +154,7 @@ android { buildConfigField "int", "CONTENT_PROXY_PORT", "443" buildConfigField "String", "SIGNAL_AGENT", "\"OWA\"" buildConfigField "String", "CDSH_PUBLIC_KEY", "\"2fe57da347cd62431528daac5fbb290730fff684afc4cfc2ed90995f58cb3b74\"" - buildConfigField "String", "CDSH_CODE_HASH", "\"ec31a51880d19a5e9e0fed404740c1a3ff53a553125564b745acce475f0fded8\"" + buildConfigField "String", "CDSH_CODE_HASH", "\"ec58c0d7561de8d5657f3a4b22a635eaa305204e9359dcc80a99dfd0c5f1cbf2\"" buildConfigField "String", "CDS_MRENCLAVE", "\"c98e00a4e3ff977a56afefe7362a27e4961e4f19e211febfbb19b897e6b80b15\"" buildConfigField "org.thoughtcrime.securesms.KbsEnclave", "KBS_ENCLAVE", "new org.thoughtcrime.securesms.KbsEnclave(\"fe7c1bfae98f9b073d220366ea31163ee82f6d04bead774f71ca8e5c40847bfe\"," + "\"fe7c1bfae98f9b073d220366ea31163ee82f6d04bead774f71ca8e5c40847bfe\", " + diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/services/CdshService.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/services/CdshService.java index dfeddd681d..0d129177ce 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/services/CdshService.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/services/CdshService.java @@ -6,6 +6,7 @@ import org.whispersystems.libsignal.util.ByteUtil; import org.whispersystems.libsignal.util.Pair; import org.whispersystems.signalservice.api.push.ACI; import org.whispersystems.signalservice.api.push.TrustStore; +import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException; import org.whispersystems.signalservice.api.util.Tls12SocketFactory; import org.whispersystems.signalservice.internal.ServiceResponse; import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration; @@ -121,6 +122,16 @@ public final class CdshService { } } + @Override + public void onClosing(WebSocket webSocket, int code, String reason) { + if (code != 1000) { + Log.w(TAG, "Remote side is closing with non-normal code " + code); + webSocket.close(1000, "Remote closed with code " + code); + stage.set(Stage.FAILURE); + emitter.onSuccess(ServiceResponse.forApplicationError(new NonSuccessfulResponseCodeException(code), code, null)); + } + } + @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { emitter.onSuccess(ServiceResponse.forApplicationError(t, response != null ? response.code() : 0, null)); @@ -130,6 +141,7 @@ public final class CdshService { }); webSocket.send(ByteString.of(enclave.initialRequest())); + emitter.setCancellable(() -> webSocket.close(1000, "OK")); }); }