2022-08-22 22:42:02 +00:00
|
|
|
From b58a6a7defbc7fa876bb980ee45c5cbbe49ed40e Mon Sep 17 00:00:00 2001
|
2022-06-16 20:08:44 +00:00
|
|
|
From: signald <nobody@signald.org>
|
|
|
|
Date: Thu, 16 Jun 2022 13:04:00 -0700
|
2022-08-22 22:04:33 +00:00
|
|
|
Subject: [PATCH] update build files and provide a way for the websocket
|
|
|
|
receive callback to indicate the message was not saved
|
2021-10-27 01:01:41 +00:00
|
|
|
|
|
|
|
---
|
2022-08-22 22:04:33 +00:00
|
|
|
build.gradle | 17 +++--------------
|
|
|
|
dependencies.gradle | 3 +--
|
|
|
|
gradle/verification-metadata.xml | 13 ++++++++-----
|
|
|
|
service/build.gradle | 19 +++++++++----------
|
|
|
|
.../signalservice/api/NotSavedException.java | 4 ++++
|
2022-08-22 22:42:02 +00:00
|
|
|
.../signalservice/api/SignalWebSocket.java | 16 ++++++++++++----
|
2022-08-22 22:04:33 +00:00
|
|
|
settings.gradle | 1 -
|
2022-08-22 22:42:02 +00:00
|
|
|
7 files changed, 37 insertions(+), 36 deletions(-)
|
2022-08-22 22:04:33 +00:00
|
|
|
create mode 100644 service/src/main/java/org/whispersystems/signalservice/api/NotSavedException.java
|
2021-10-27 01:01:41 +00:00
|
|
|
|
|
|
|
diff --git a/build.gradle b/build.gradle
|
2022-08-22 22:04:33 +00:00
|
|
|
index 2498bfcb..965084e6 100644
|
2021-10-27 01:01:41 +00:00
|
|
|
--- a/build.gradle
|
|
|
|
+++ b/build.gradle
|
2022-06-16 20:08:44 +00:00
|
|
|
@@ -9,11 +9,8 @@ buildscript {
|
2022-01-16 01:17:26 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
-plugins {
|
|
|
|
- id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
|
|
|
|
-}
|
2022-06-16 20:08:44 +00:00
|
|
|
|
2022-01-16 01:17:26 +00:00
|
|
|
-project.group = "com.github.turasa"
|
|
|
|
+project.group = "org.signald"
|
|
|
|
|
|
|
|
def getRepositoryUsername() {
|
|
|
|
return hasProperty('whisperSonatypeUsername') ? whisperSonatypeUsername : ""
|
2022-06-16 20:08:44 +00:00
|
|
|
@@ -23,18 +20,10 @@ def getRepositoryPassword() {
|
2021-10-27 02:46:14 +00:00
|
|
|
return hasProperty('whisperSonatypePassword') ? whisperSonatypePassword : ""
|
2021-10-27 01:01:41 +00:00
|
|
|
}
|
2021-10-27 02:46:14 +00:00
|
|
|
|
|
|
|
-nexusPublishing {
|
|
|
|
- repositories {
|
|
|
|
- sonatype {
|
|
|
|
- username = getRepositoryUsername()
|
|
|
|
- password = getRepositoryPassword()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
2022-06-16 20:08:44 +00:00
|
|
|
|
2021-10-27 02:46:14 +00:00
|
|
|
subprojects {
|
2022-08-22 22:04:33 +00:00
|
|
|
- ext.lib_signal_service_version_number = "2.15.3_unofficial_50"
|
2022-01-16 01:17:26 +00:00
|
|
|
- ext.lib_signal_service_group_info = "com.github.turasa"
|
2022-08-22 22:04:33 +00:00
|
|
|
+ ext.lib_signal_service_version_number = "2.15.3_unofficial_50_signald_1"
|
2022-01-16 01:17:26 +00:00
|
|
|
+ ext.lib_signal_service_group_info = "org.signald"
|
|
|
|
|
|
|
|
if (JavaVersion.current().isJava8Compatible()) {
|
|
|
|
allprojects {
|
2021-10-27 01:01:41 +00:00
|
|
|
diff --git a/dependencies.gradle b/dependencies.gradle
|
2022-06-16 20:08:44 +00:00
|
|
|
index e4b9f8a8..20e0d2f2 100644
|
2021-10-27 01:01:41 +00:00
|
|
|
--- a/dependencies.gradle
|
|
|
|
+++ b/dependencies.gradle
|
2021-11-20 23:50:18 +00:00
|
|
|
@@ -8,8 +8,7 @@ dependencyResolutionManagement {
|
2022-06-16 20:08:44 +00:00
|
|
|
alias('google-libphonenumber').to('com.googlecode.libphonenumber:libphonenumber:8.12.48')
|
2021-10-27 01:01:41 +00:00
|
|
|
|
|
|
|
// 1st Party
|
2022-04-06 18:45:49 +00:00
|
|
|
- alias('libsignal-client').to('org.signal', 'libsignal-client').versionRef('libsignal-client')
|
|
|
|
- alias('libsignal-android').to('org.signal', 'libsignal-android').versionRef('libsignal-client')
|
|
|
|
+ alias('libsignal-client').to('org.signald', 'libsignal-client-' + System.getenv("TARGET")).versionRef('libsignal-client')
|
2021-10-27 01:01:41 +00:00
|
|
|
|
|
|
|
// Third Party
|
2022-01-16 01:17:26 +00:00
|
|
|
alias('jackson-core').to('com.fasterxml.jackson.core:jackson-databind:2.13.0')
|
|
|
|
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
|
2022-06-16 20:08:44 +00:00
|
|
|
index fc39d024..59fde59c 100644
|
2022-01-16 01:17:26 +00:00
|
|
|
--- a/gradle/verification-metadata.xml
|
|
|
|
+++ b/gradle/verification-metadata.xml
|
2022-03-22 02:06:14 +00:00
|
|
|
@@ -482,6 +482,9 @@
|
|
|
|
<artifact name="protoc-3.18.0-linux-x86_64.exe">
|
|
|
|
<sha256 value="e977a0b300a3b0c7c0135a02b8a4d746081e1cd8946ea747e0247412535692fe" origin="Generated by Gradle"/>
|
|
|
|
</artifact>
|
|
|
|
+ <artifact name="protoc-3.18.0-osx-x86_64.exe">
|
|
|
|
+ <sha256 value="956241e25cac149cf8d01d4f9125f2913b3bc471deea6856231367cdf4be71a4" origin="Generated by Gradle"/>
|
|
|
|
+ </artifact>
|
|
|
|
</component>
|
|
|
|
<component group="com.google.testing.platform" name="core-proto" version="0.0.8-alpha04">
|
|
|
|
<artifact name="core-proto-0.0.8-alpha04.jar">
|
2022-04-27 00:28:29 +00:00
|
|
|
@@ -1133,12 +1136,12 @@
|
2022-06-16 20:08:44 +00:00
|
|
|
<sha256 value="95510c70f1bf0fd65ddc1f39fbf7a42d75d8a064dc3a2cbe52496fa2f2c535f0" origin="Generated by Gradle"/>
|
2022-01-16 01:17:26 +00:00
|
|
|
</artifact>
|
|
|
|
</component>
|
2022-06-16 20:08:44 +00:00
|
|
|
- <component group="org.signal" name="libsignal-client" version="0.17.0">
|
|
|
|
- <artifact name="libsignal-client-0.17.0.jar">
|
|
|
|
- <sha256 value="3611dc9425d7ef85daedbafa49fa67f49e921bf89e36f601d0b79b1268315619" origin="Generated by Gradle"/>
|
|
|
|
+ <component group="org.signald" name="libsignal-client-{TARGET}" version="0.17.0">
|
|
|
|
+ <artifact name="libsignal-client-{TARGET}-0.17.0.jar">
|
2022-01-16 01:17:26 +00:00
|
|
|
+ <sha256 value="{TARGET_JAR_SHA256}" origin="Generated by Gradle"/>
|
2022-06-16 20:08:44 +00:00
|
|
|
</artifact>
|
|
|
|
- <artifact name="libsignal-client-0.17.0.module">
|
|
|
|
- <sha256 value="cc6125c6e30421eb39a115576371a41f0adde7ea501e99d2c74192264e6fb1ab" origin="Generated by Gradle"/>
|
|
|
|
+ <artifact name="libsignal-client-{TARGET}-0.17.0.module">
|
2022-03-22 01:59:33 +00:00
|
|
|
+ <sha256 value="{TARGET_MODULE_SHA256}" origin="Generated by Gradle"/>
|
2022-01-16 01:17:26 +00:00
|
|
|
</artifact>
|
|
|
|
</component>
|
2022-04-06 18:45:49 +00:00
|
|
|
<component group="org.tensorflow" name="tensorflow-lite-metadata" version="0.1.0-rc2">
|
2021-10-27 01:01:41 +00:00
|
|
|
diff --git a/service/build.gradle b/service/build.gradle
|
2022-06-16 20:08:44 +00:00
|
|
|
index ae4df43a..4b0240d8 100644
|
2021-10-27 01:01:41 +00:00
|
|
|
--- a/service/build.gradle
|
|
|
|
+++ b/service/build.gradle
|
2022-01-16 01:17:26 +00:00
|
|
|
@@ -21,6 +21,7 @@ compileJava {
|
2021-11-08 23:47:39 +00:00
|
|
|
}
|
|
|
|
|
2021-11-08 23:20:04 +00:00
|
|
|
repositories {
|
2021-11-08 23:47:39 +00:00
|
|
|
+ maven {url "https://gitlab.com/api/v4/groups/6853927/-/packages/maven"} // https://gitlab.com/groups/signald/-/packages
|
2021-11-08 23:20:04 +00:00
|
|
|
mavenCentral()
|
|
|
|
mavenLocal()
|
2021-11-08 23:47:39 +00:00
|
|
|
}
|
2022-03-22 01:58:14 +00:00
|
|
|
@@ -98,7 +99,7 @@ def getRepositoryPassword() {
|
2021-10-27 01:01:41 +00:00
|
|
|
publishing {
|
|
|
|
publications {
|
2022-03-22 01:58:14 +00:00
|
|
|
mavenJava(MavenPublication) {
|
2021-10-27 01:01:41 +00:00
|
|
|
- artifactId = 'signal-service-java'
|
2021-11-20 23:50:18 +00:00
|
|
|
+ artifactId = 'signal-service-java-' + System.getenv("TARGET")
|
2021-11-09 00:53:59 +00:00
|
|
|
from components.java
|
2021-11-19 02:56:25 +00:00
|
|
|
|
|
|
|
pom {
|
2022-03-22 01:58:14 +00:00
|
|
|
@@ -139,16 +140,14 @@ publishing {
|
2021-11-08 23:47:39 +00:00
|
|
|
|
2021-10-27 01:01:41 +00:00
|
|
|
repositories {
|
|
|
|
maven {
|
2021-11-19 02:56:25 +00:00
|
|
|
- url = getReleaseRepositoryUrl()
|
2021-10-27 01:01:41 +00:00
|
|
|
- credentials {
|
|
|
|
- username getRepositoryUsername()
|
|
|
|
- password getRepositoryPassword()
|
2021-11-19 03:02:58 +00:00
|
|
|
+ url System.getenv("CI_API_V4_URL") + "/projects/" + System.getenv("CI_PROJECT_ID") + "/packages/maven"
|
2021-10-27 01:01:41 +00:00
|
|
|
+ credentials(HttpHeaderCredentials) {
|
|
|
|
+ name = 'Job-Token'
|
|
|
|
+ value = System.getenv("CI_JOB_TOKEN")
|
2022-03-22 01:58:14 +00:00
|
|
|
+ }
|
2021-10-27 01:01:41 +00:00
|
|
|
+ authentication {
|
2022-03-22 01:58:14 +00:00
|
|
|
+ header(HttpHeaderAuthentication)
|
|
|
|
}
|
2021-10-27 01:01:41 +00:00
|
|
|
}
|
|
|
|
}
|
2022-04-27 00:25:45 +00:00
|
|
|
}
|
2021-10-27 01:01:41 +00:00
|
|
|
-
|
|
|
|
-signing {
|
|
|
|
- required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
|
|
|
|
- sign publishing.publications.mavenJava
|
|
|
|
-}
|
2022-08-22 22:04:33 +00:00
|
|
|
diff --git a/service/src/main/java/org/whispersystems/signalservice/api/NotSavedException.java b/service/src/main/java/org/whispersystems/signalservice/api/NotSavedException.java
|
|
|
|
new file mode 100644
|
|
|
|
index 00000000..05d77d1f
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/service/src/main/java/org/whispersystems/signalservice/api/NotSavedException.java
|
|
|
|
@@ -0,0 +1,4 @@
|
|
|
|
+package org.whispersystems.signalservice.api;
|
|
|
|
+
|
|
|
|
+public class NotSavedException extends Exception {
|
|
|
|
+}
|
|
|
|
diff --git a/service/src/main/java/org/whispersystems/signalservice/api/SignalWebSocket.java b/service/src/main/java/org/whispersystems/signalservice/api/SignalWebSocket.java
|
2022-08-22 22:42:02 +00:00
|
|
|
index 5a98f3c4..6ae9d72e 100644
|
2022-08-22 22:04:33 +00:00
|
|
|
--- a/service/src/main/java/org/whispersystems/signalservice/api/SignalWebSocket.java
|
|
|
|
+++ b/service/src/main/java/org/whispersystems/signalservice/api/SignalWebSocket.java
|
2022-08-22 22:42:02 +00:00
|
|
|
@@ -238,11 +238,12 @@ public final class SignalWebSocket {
|
|
|
|
*/
|
|
|
|
@SuppressWarnings("DuplicateThrows")
|
|
|
|
public Optional<SignalServiceEnvelope> readOrEmpty(long timeout, MessageReceivedCallback callback)
|
|
|
|
- throws TimeoutException, WebSocketUnavailableException, IOException
|
|
|
|
+ throws TimeoutException, WebSocketUnavailableException, IOException, NotSavedException
|
|
|
|
{
|
2022-08-22 22:04:33 +00:00
|
|
|
while (true) {
|
|
|
|
WebSocketRequestMessage request = getWebSocket().readRequest(timeout);
|
|
|
|
WebSocketResponseMessage response = createWebSocketResponse(request);
|
|
|
|
+ boolean sendResponse = true; // indicates the acknowledgement should be sent to the server
|
|
|
|
try {
|
|
|
|
if (isSignalServiceEnvelope(request)) {
|
|
|
|
Optional<String> timestampHeader = findHeader(request);
|
2022-08-22 22:42:02 +00:00
|
|
|
@@ -258,13 +259,20 @@ public final class SignalWebSocket {
|
2022-08-22 22:04:33 +00:00
|
|
|
|
|
|
|
SignalServiceEnvelope envelope = new SignalServiceEnvelope(request.getBody().toByteArray(), timestamp);
|
|
|
|
|
|
|
|
- callback.onMessage(envelope);
|
|
|
|
+ try {
|
|
|
|
+ callback.onMessage(envelope);
|
|
|
|
+ } catch (NotSavedException e) {
|
|
|
|
+ sendResponse = false;
|
2022-08-22 22:42:02 +00:00
|
|
|
+ throw e;
|
2022-08-22 22:04:33 +00:00
|
|
|
+ }
|
|
|
|
return Optional.of(envelope);
|
|
|
|
} else if (isSocketEmptyRequest(request)) {
|
|
|
|
return Optional.empty();
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
- getWebSocket().sendResponse(response);
|
|
|
|
+ if(sendResponse) {
|
|
|
|
+ getWebSocket().sendResponse(response);
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-08-22 22:42:02 +00:00
|
|
|
@@ -315,6 +323,6 @@ public final class SignalWebSocket {
|
2022-08-22 22:04:33 +00:00
|
|
|
* received.
|
|
|
|
*/
|
|
|
|
public interface MessageReceivedCallback {
|
|
|
|
- void onMessage(SignalServiceEnvelope envelope);
|
|
|
|
+ void onMessage(SignalServiceEnvelope envelope) throws NotSavedException;
|
|
|
|
}
|
|
|
|
}
|
2021-10-27 01:01:41 +00:00
|
|
|
diff --git a/settings.gradle b/settings.gradle
|
2022-06-16 20:08:44 +00:00
|
|
|
index 8861c008..8dd03423 100644
|
2021-10-27 01:01:41 +00:00
|
|
|
--- a/settings.gradle
|
|
|
|
+++ b/settings.gradle
|
2022-06-16 20:08:44 +00:00
|
|
|
@@ -1,6 +1,5 @@
|
2021-10-27 01:01:41 +00:00
|
|
|
enableFeaturePreview('VERSION_CATALOGS')
|
|
|
|
|
|
|
|
-include ':android'
|
2022-06-16 20:08:44 +00:00
|
|
|
|
2021-10-27 01:01:41 +00:00
|
|
|
include 'libsignal-service'
|
|
|
|
project(':libsignal-service').projectDir = file('service')
|
|
|
|
--
|
2022-01-16 01:17:26 +00:00
|
|
|
2.30.2
|
2021-10-27 01:01:41 +00:00
|
|
|
|