From ddfda91fb564713b1d0d8f4d29f80c00b3fb945e Mon Sep 17 00:00:00 2001 From: SessionHero01 <180888785+SessionHero01@users.noreply.github.com> Date: Wed, 9 Apr 2025 10:02:20 +1000 Subject: [PATCH] Fix "config too large" crash (#1077) * Catch config push exceptions * Tidied up --- .../securesms/configs/ConfigUploader.kt | 21 +++++++++++++------ libsession/build.gradle | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigUploader.kt b/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigUploader.kt index 5543142e67..5b010f06be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigUploader.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/configs/ConfigUploader.kt @@ -208,11 +208,15 @@ class ConfigUploader @Inject constructor( // Gather data to push groupConfigAccess { configs -> if (configs.groupMembers.needsPush()) { - membersPush = configs.groupMembers.push() + membersPush = runCatching { configs.groupMembers.push() } + .onFailure { Log.w(TAG, "Error generating group members config push", it) } + .getOrNull() } if (configs.groupInfo.needsPush()) { - infoPush = configs.groupInfo.push() + infoPush = runCatching { configs.groupInfo.push() } + .onFailure { Log.w(TAG, "Error generating group info config push", it) } + .getOrNull() } keysPush = configs.groupKeys.pendingConfig() @@ -338,7 +342,12 @@ class ConfigUploader @Inject constructor( return@mapNotNull null } - type to config.push() + val configPush = runCatching { config.push() } + .onFailure { Log.w(TAG, "Error generating $type config", it) } + .getOrNull() + ?: return@mapNotNull null + + type to configPush } } @@ -352,17 +361,17 @@ class ConfigUploader @Inject constructor( val pushTasks = pushes.map { (configType, configPush) -> async { - (configType to configPush) to pushConfig( + Triple(configType, configPush, pushConfig( userAuth, snode, configPush, configType.namespace - ) + )) } } val pushResults = - pushTasks.awaitAll().associate { it.first.first to (it.first.second to it.second) } + pushTasks.awaitAll().associate { (configType, push, result) -> configType to (push to result) } Log.d(TAG, "Pushed ${pushResults.size} user configs") diff --git a/libsession/build.gradle b/libsession/build.gradle index b616340a4c..b5f77bda6c 100644 --- a/libsession/build.gradle +++ b/libsession/build.gradle @@ -53,7 +53,7 @@ dependencies { ksp("com.google.dagger:hilt-compiler:$daggerHiltVersion") ksp("androidx.hilt:hilt-compiler:$jetpackHiltVersion") - api 'org.sessionfoundation:libsession-util-android:1.0.2' + api 'org.sessionfoundation:libsession-util-android:1.0.3' implementation "net.java.dev.jna:jna:5.12.1@aar" implementation "androidx.core:core-ktx:$coreVersion"