briar issueshttps://code.briarproject.org/briar/briar/-/issues2023-10-06T16:19:42Zhttps://code.briarproject.org/briar/briar/-/issues/2449InvalidQrCode - Briar fails to pair with Mailbox2023-10-06T16:19:42ZLaurens NikolaisenInvalidQrCode - Briar fails to pair with MailboxWhen trying to pair Briar with a working Mailbox-Server hosted on a Linux Server, it fails with the following error:
`InvalidQrCode`
The Mailbox works with the Linux Desktop client without any issues. I did test on a Pixel 5 as well as ...When trying to pair Briar with a working Mailbox-Server hosted on a Linux Server, it fails with the following error:
`InvalidQrCode`
The Mailbox works with the Linux Desktop client without any issues. I did test on a Pixel 5 as well as a Pixel 4a running CalyxOS. Using older versions of the App did not work as well for me.
Relevant logs:
```
0-05 23:26:56.750 I/TorWrapper: V3 descriptor uploaded for f24[scrubbed]
10-05 23:26:57.735 I/CameraView: Setting preview consumer
10-05 23:26:57.736 I/CameraView: Opening camera
10-05 23:26:57.740 I/CameraView: Using back-facing camera
10-05 23:26:57.769 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
10-05 23:26:57.775 I/CameraView: Focus modes: [infinity, auto, macro, continuous-video, continuous-picture]
10-05 23:26:57.776 I/CameraView: Video stabilisation enabled: true
10-05 23:26:57.776 I/CameraView: Scene mode: null
10-05 23:26:57.776 I/CameraView: Focus mode: continuous-picture
10-05 23:26:57.776 I/CameraView: Flash mode: off
10-05 23:26:57.776 I/CameraView: Preview size: 1920x1080
10-05 23:26:57.783 I/CameraView: Surface created
10-05 23:26:57.783 I/CameraView: Surface changed: 1080x1984
10-05 23:26:57.784 I/CameraView: Size 2560x1280, stretch 1.0887097, zoom 6.5536, score 0.14015481
10-05 23:26:57.784 I/CameraView: Size 2048x1536, stretch 1.3777777, zoom 6.291456, score 0.11536383
10-05 23:26:57.784 I/CameraView: Size 1920x1440, stretch 1.3777777, zoom 5.5296, score 0.1312584
10-05 23:26:57.784 I/CameraView: Size 1920x1080, stretch 1.0333333, zoom 4.1472, score 0.23334827
10-05 23:26:57.784 I/CameraView: Size 1920x960, stretch 1.0887097, zoom 3.6864, score 0.24916407
10-05 23:26:57.784 I/CameraView: Size 1600x1200, stretch 1.3777777, zoom 3.84, score 0.18901211
10-05 23:26:57.784 I/CameraView: Size 1440x1080, stretch 1.3777777, zoom 3.1104, score 0.2333483
10-05 23:26:57.784 I/CameraView: Size 1280x960, stretch 1.3777777, zoom 2.4576, score 0.29533142
10-05 23:26:57.784 I/CameraView: Size 1280x720, stretch 1.0333333, zoom 1.8432, score 0.5250336
10-05 23:26:57.784 I/CameraView: Size 1024x768, stretch 1.3777777, zoom 1.572864, score 0.46145532
10-05 23:26:57.784 I/CameraView: Size 800x600, stretch 1.3777777, zoom 1.0416666, score 0.69677424
10-05 23:26:57.784 I/CameraView: Size 720x480, stretch 1.2246914, zoom 1.4467592, score 0.5643871
10-05 23:26:57.784 I/CameraView: Size 640x480, stretch 1.3777777, zoom 1.6276041, score 0.44593552
10-05 23:26:57.784 I/CameraView: Size 640x360, stretch 1.0333333, zoom 2.1701388, score 0.44593552
10-05 23:26:57.784 I/CameraView: Size 352x288, stretch 1.5030303, zoom 4.9321337, score 0.13489549
10-05 23:26:57.784 I/CameraView: Size 320x240, stretch 1.3777777, zoom 6.5104165, score 0.11148388
10-05 23:26:57.784 I/CameraView: Size 176x144, stretch 1.5030303, zoom 19.728535, score 0.033723872
10-05 23:26:57.784 I/CameraView: Best size 800x600
10-05 23:26:57.785 I/CameraView: Video stabilisation enabled: true
10-05 23:26:57.785 I/CameraView: Scene mode: null
10-05 23:26:57.785 I/CameraView: Focus mode: continuous-picture
10-05 23:26:57.785 I/CameraView: Flash mode: off
10-05 23:26:57.785 I/CameraView: Preview size: 800x600
10-05 23:26:57.785 I/CameraView: Starting preview
10-05 23:27:02.136 I/TorWrapper: V3 descriptor uploaded for f24[scrubbed]
10-05 23:27:03.534 I/MailboxViewModel: Got result from decoder
10-05 23:27:03.540 I/MailboxViewModel: New pairing state: QrCodeReceived
10-05 23:27:03.542 I/MailboxViewModel: New pairing state: InvalidQrCode
10-05 23:27:03.549 I/CameraView: Stopping preview
10-05 23:27:03.565 I/CameraView: Releasing camera
10-05 23:27:03.854 I/CameraView: Surface destroyed
10-05 23:27:06.620 I/BaseActivity: Pausing MailboxActivity
```
Additional Logs:
```
# Timestamp
ReportTime: 2023-10-05 23:27:10.844
# Build Information
BuildTimestamp: 2023-08-23 09:45:39.000
BuildType: release
Debug: false
Flavor: official
GitHash: b68d24d
# Device Information
AndroidApi: 33
AndroidVersion: 13
AppStandbyBucket: 5
Brand: google
Model: Pixel 5
Product: redfin
android.hardware.audio.low_latency: true
android.hardware.audio.output: true
android.hardware.audio.pro: true
android.hardware.bluetooth: true
android.hardware.bluetooth_le: true
android.hardware.camera: true
android.hardware.camera.any: true
android.hardware.camera.autofocus: true
android.hardware.camera.capability.manual_post_processing: true
android.hardware.camera.capability.manual_sensor: true
android.hardware.camera.capability.raw: true
android.hardware.camera.concurrent: true
android.hardware.camera.flash: true
android.hardware.camera.front: true
android.hardware.camera.level.full: true
android.hardware.context_hub: true
android.hardware.device_unique_attestation: true
android.hardware.faketouch: true
android.hardware.fingerprint: true
android.hardware.identity_credential: true
android.hardware.location: true
android.hardware.location.gps: true
android.hardware.location.network: true
android.hardware.microphone: true
android.hardware.nfc: true
android.hardware.nfc.any: true
android.hardware.nfc.ese: true
android.hardware.nfc.hce: true
android.hardware.nfc.hcef: true
android.hardware.nfc.uicc: true
android.hardware.opengles.aep: true
android.hardware.ram.normal: true
android.hardware.reboot_escrow: true
android.hardware.screen.landscape: true
android.hardware.screen.portrait: true
android.hardware.se.omapi.ese: true
android.hardware.se.omapi.uicc: true
android.hardware.security.model.compatible: true
android.hardware.sensor.accelerometer: true
android.hardware.sensor.barometer: true
android.hardware.sensor.compass: true
android.hardware.sensor.gyroscope: true
android.hardware.sensor.hifi_sensors: true
android.hardware.sensor.light: true
android.hardware.sensor.proximity: true
android.hardware.sensor.stepcounter: true
android.hardware.sensor.stepdetector: true
android.hardware.strongbox_keystore: true
android.hardware.telephony: true
android.hardware.telephony.calling: true
android.hardware.telephony.carrierlock: true
android.hardware.telephony.cdma: true
android.hardware.telephony.data: true
android.hardware.telephony.euicc: true
android.hardware.telephony.gsm: true
android.hardware.telephony.ims: true
android.hardware.telephony.messaging: true
android.hardware.telephony.radio.access: true
android.hardware.telephony.subscription: true
android.hardware.touchscreen: true
android.hardware.touchscreen.multitouch: true
android.hardware.touchscreen.multitouch.distinct: true
android.hardware.touchscreen.multitouch.jazzhand: true
android.hardware.usb.accessory: true
android.hardware.usb.host: true
android.hardware.vulkan.compute: true
android.hardware.vulkan.level: true
android.hardware.vulkan.version: true
android.hardware.wifi: true
android.hardware.wifi.aware: true
android.hardware.wifi.direct: true
android.hardware.wifi.passpoint: true
android.hardware.wifi.rtt: true
android.software.activities_on_secondary_displays: true
android.software.app_enumeration: true
android.software.app_widgets: true
android.software.autofill: true
android.software.backup: true
android.software.cant_save_state: true
android.software.companion_device_setup: true
android.software.controls: true
android.software.cts: true
android.software.device_admin: true
android.software.device_id_attestation: true
android.software.file_based_encryption: true
android.software.home_screen: true
android.software.incremental_delivery: true
android.software.input_methods: true
android.software.ipsec_tunnels: true
android.software.live_wallpaper: true
android.software.managed_users: true
android.software.midi: true
android.software.opengles.deqp.level: true
android.software.picture_in_picture: true
android.software.print: true
android.software.secure_lock_screen: true
android.software.securely_removes_users: true
android.software.sip: true
android.software.sip.voip: true
android.software.telecom: true
android.software.verified_boot: true
android.software.voice_recognizers: true
android.software.vulkan.deqp.level: true
android.software.webview: true
android.software.window_magnification: true
com.google.android.feature.GOOGLE_EXPERIENCE: true
com.google.android.feature.PIXEL_2017_EXPERIENCE: true
com.google.android.feature.PIXEL_2018_EXPERIENCE: true
com.google.android.feature.PIXEL_2019_EXPERIENCE: true
com.google.android.feature.PIXEL_2019_MIDYEAR_EXPERIENCE: true
com.google.android.feature.PIXEL_2020_EXPERIENCE: true
com.google.android.feature.PIXEL_2020_MIDYEAR_EXPERIENCE: true
com.google.android.feature.PIXEL_EXPERIENCE: true
com.nxp.mifare: true
glEsVersion: 3.2
org.lineageos.globalactions: true
org.lineageos.hardware: true
org.lineageos.health: true
org.lineageos.livedisplay: true
org.lineageos.settings: true
org.lineageos.trust: true
```https://code.briarproject.org/briar/briar/-/issues/2447AssertionError when choosing images to send2024-03-18T17:19:45ZakwizgranAssertionError when choosing images to sendPossibly the same issue as #2057, but the stacktrace is different.
* Android version: 13
* Phone model: Redmi 21091116AI (evergo_in)
* Briar version: 1.5.4 (7d76171)
Edited log:
```
08-29 15:32:16.062 I/BaseActivity: Pausing Conversati...Possibly the same issue as #2057, but the stacktrace is different.
* Android version: 13
* Phone model: Redmi 21091116AI (evergo_in)
* Briar version: 1.5.4 (7d76171)
Edited log:
```
08-29 15:32:16.062 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:16.076 I/BaseActivity: Creating ImageActivity
08-29 15:32:16.094 I/BaseActivity: Starting ImageActivity
08-29 15:32:16.097 I/BaseActivity: Resuming ImageActivity
08-29 15:32:16.507 I/BaseActivity: Stopping ConversationActivity
08-29 15:32:18.346 I/BaseActivity: Starting ConversationActivity
08-29 15:32:18.793 I/BaseActivity: Pausing ImageActivity
08-29 15:32:18.819 I/BaseActivity: Resuming ConversationActivity
08-29 15:32:18.821 I/BaseActivity: Stopping ImageActivity
08-29 15:32:18.822 I/BaseActivity: Destroying ImageActivity
08-29 15:32:19.415 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:19.902 I/BaseActivity: Stopping ConversationActivity
08-29 15:32:20.246 I/BaseActivity: Starting ConversationActivity
08-29 15:32:20.257 I/BaseActivity: Resuming ConversationActivity
08-29 15:32:21.080 I/BaseActivity: Pausing ConversationActivity
08-29 15:32:24.972 I/AutoDeleteManagerImpl: Mirroring auto-delete timer 604800000
08-29 15:32:24.995 I/ConversationActivity: Message received, adding
08-29 15:32:24.998 I/ContactsViewModel: Conversation message tracked, updating item
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:159)
at org.briarproject.briar.android.conversation.ConversationActivity.onImagesChosen(ConversationActivity.java:788)
at org.briarproject.briar.android.conversation.ConversationActivity.$r8$lambda$Yw3fl1gK9EIeGMTHPyKDfNfoOkI(Unknown Source:0)
at org.briarproject.briar.android.conversation.ConversationActivity$$ExternalSyntheticLambda2.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:418)
at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:375)
at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:777)
at androidx.fragment.app.FragmentActivity.onActivityResult(FragmentActivity.java:152)
at org.briarproject.briar.android.activity.BriarActivity.onActivityResult(BriarActivity.java:75)
at org.briarproject.briar.android.conversation.ConversationActivity.onActivityResult(ConversationActivity.java:320)
at android.app.Activity.dispatchActivityResult(Activity.java:8923)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5592)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5638)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2437)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.app.ActivityThread.main(ActivityThread.java:8294)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2445ProtocolStateException when trying to share a forum2023-09-19T10:47:04ZakwizgranProtocolStateException when trying to share a forumA user reported that every time they try to share a forum, Briar fails to load the list of contacts to share it with.
* Android version: 13
* Phone model: Honor NTH-NX9
* Briar version: 1.5.7 (6ae601e)
Edited log:
```
09-14 09:48:26.87...A user reported that every time they try to share a forum, Briar fails to load the list of contacts to share it with.
* Android version: 13
* Phone model: Honor NTH-NX9
* Briar version: 1.5.7 (6ae601e)
Edited log:
```
09-14 09:48:26.873 I/BaseActivity: Pausing ForumActivity
09-14 09:48:26.884 I/BaseActivity: Creating ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Starting ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Resuming ShareForumActivity
09-14 09:48:27.331 I/BaseActivity: Stopping ForumActivity
09-14 09:48:30.376 W/ContactSelectorControllerImpl: org.briarproject.briar.api.client.ProtocolStateException
org.briarproject.briar.api.client.ProtocolStateException
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:510)
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:480)
at org.briarproject.briar.android.sharing.ShareForumControllerImpl.getSharingStatus(ShareForumControllerImpl.java:53)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.lambda$loadContacts$0(ContactSelectorControllerImpl.java:58)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.$r8$lambda$3abQlDMLIGMlOAkNr01IGOPM62Q(Unknown Source:0)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at org.briarproject.briar.android.controller.DbControllerImpl.lambda$runOnDbThread$0(DbControllerImpl.java:36)
at org.briarproject.briar.android.controller.DbControllerImpl.$r8$lambda$JAD5-f_MagcCZjTRNXknhcwg-tw(Unknown Source:0)
at org.briarproject.briar.android.controller.DbControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
09-14 09:48:30.381 I/BaseActivity: Pausing ShareForumActivity
09-14 09:48:30.390 I/BaseActivity: Starting ForumActivity
09-14 09:48:30.390 I/BaseActivity: Resuming ForumActivity
09-14 09:48:30.831 I/BaseActivity: Stopping ShareForumActivity
09-14 09:48:30.831 I/BaseActivity: Destroying ShareForumActivity
```
The exception is thrown because the [state machine](https://code.briarproject.org/briar/briar-spec/blob/master/clients/Forum-Sharing-Client.md#state-machine) is in the `LOCAL_LEFT` or `REMOTE_HANGING` state.
We had a [discussion](https://code.briarproject.org/briar/briar/-/merge_requests/1758#note_74062) about how to handle these states and I suggested throwing this exception on the assumption that the states should only be seen in the rare case where the user has left the forum more-or-less simultaneously with trying to share it. Clearly that assumption was wrong, because this user reports that they can reproduce the bug reliably. So the state machine has ended up in one of those states despite the user still belonging to the forum.
My guess would be that the user left and then rejoined the forum.https://code.briarproject.org/briar/briar/-/issues/2443OOM error when polling large number of contacts2023-08-24T15:00:10ZakwizgranOOM error when polling large number of contacts* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target foo...* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target footprint 201326592, growth limit 201326592; giving up on allocation because <1% of heap free after GC.
at java.util.regex.Pattern.matcher(Pattern.java:1040)
at org.briarproject.bramble.plugin.tor.TorPlugin.createConnection(TorPlugin.java:361)
at org.briarproject.bramble.plugin.tor.TorPlugin.lambda$connect$2(TorPlugin.java:349)
at org.briarproject.bramble.plugin.tor.TorPlugin.$r8$lambda$dsAekyWijvXWn3loJi16FAklboE(Unknown Source:0)
at org.briarproject.bramble.plugin.tor.TorPlugin$$ExternalSyntheticLambda4.run(Unknown Source:6)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.lambda$executeWakefully$0(AndroidWakeLockManagerImpl.java:71)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.$r8$lambda$YrcWd5iwE_LXXUj-LlmRNhzP9-U(Unknown Source:0)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
```
* NativeHeapAllocated: 467,674,320
* NativeHeapFree: 57,465,872
* NativeHeapTotal: 539,607,040
* SystemMemoryFree: 1,281,261,568
* SystemMemoryLow: false
* SystemMemoryThreshold: 339,738,624
* SystemMemoryTotal: 3,834,589,184
* VirtualMachineMemoryFree: 4,663,224
* VirtualMachineMemoryMaximum: 201,326,592
* VirtualMachineMemoryTotal: 201,326,592
The log shows that the crash happened about 9 seconds after polling the Tor plugin. Connection attempts from the previous two polls were still in progress, as shown by the messages logged when those attempts timed out. The previous two polls appear to have happened in quick succession, as two failures for the same address were often logged back-to-back. (This can happen when the plugin's enabled, as the first poll happens immediately and the second is scheduled after a randomised interval.)
The log shows that the user has at least 54 contacts. I'd speculate that this may cause polling to take longer than the polling interval, causing pending connection attempts to pile up.
All of the connection failures except the last are logged as "java.io.IOException: Connection failed: Host unreachable". The last connection failure is logged as "java.net.SocketTimeoutException: failed to connect to /127.0.0.1 (port 59050) from /127.0.0.1 (port 57012) after 5000ms", indicating that the connection to Tor's SOCKS port on localhost timed out. Perhaps the Tor process had become unresponsive, or perhaps the Java process was spending too much time in GC to service the connection.
The memory stats show 539 MB of native heap, which is a lot! Maybe there's a large backlog of socket connections, each with some native heap allocations, and each with an IoExecutor thread waiting on it that might have its own native heap allocations?
`VirtualMemoryFree` doesn't match the amount in the OOM error message, which is an issue we've seen before (https://code.briarproject.org/briar/briar/-/issues/1898#note_76643).
It's useful to know that the allocator gives up if it can't free more than 1% of the max heap space after GC.https://code.briarproject.org/briar/briar/-/issues/2442ArrayIndexOutOfBoundsException in Editor#onDraw()2023-08-24T15:00:04ZakwizgranArrayIndexOutOfBoundsException in Editor#onDraw()This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
...This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1729)
at android.widget.Editor.onDraw(Editor.java:1698)
at android.widget.TextView.onDraw(TextView.java:6973)
at android.view.View.draw(View.java:19215)
at android.view.View.updateDisplayListIfDirty(View.java:18162)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3050)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2864)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2417)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1429)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6823)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6543)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
```https://code.briarproject.org/briar/briar/-/issues/2441Feature request: Acoustic channel2023-11-16T17:29:50ZAlex TimofeevFeature request: Acoustic channel**Overview**
Along with BT, WiFi, Internet and file exchange channels, I propose implementing an acoustic channel, based on already existing FLOSS library.
**Pros of the feature**
- Landline and cell phone lines may remain intact duri...**Overview**
Along with BT, WiFi, Internet and file exchange channels, I propose implementing an acoustic channel, based on already existing FLOSS library.
**Pros of the feature**
- Landline and cell phone lines may remain intact during the internet outages, as they usually raise way less concern of censorship authorities. Acoustic channel can be employed for long distance messaging if there is a working phone nearby. _Note: while I didn't test this use case myself, I can predict no technical challenges here._
- Acoustic channel can be run over any kind of two-way radio. While BT and Wi-Fi have a range limit of hundred meters, cheap license-free VHF/UHF radios can make up to 10 km link, 27MHz CB radio up to 100km. HF ham radios, as well as Satcom/Meridian satellites, used by some anarchic hams, both provide a worldwide link. _Note: recently I tested the library suggested below over a UHF radio with a fellow ham and it works. We used simple mic-to-speaker coupling, the connection can be more stable if you make a special cable (our test will follow)_
- Acoustic channel can be used per se, as a super-close-range wireless channel, despite I can't imagine a probable use case. _Note: of course, I tested that way of operation for the library proposed and it works._
**Cons of the feature**
- Use of acoustic channel required the microphone active for data reception. Despite Briar being FLOSS, some users surely will have a privacy concern. _Solution:_ Make the acoustic channel to be optional, disabled by default, and showing a warning before the first activation. Only if user consent is obtained we will ask for mic access permission.
- Accidental transmission of a large file can congest the channel for a long time, but it must not be absolutely forbidden as the file may have life-critical value (e.g. ID papers of a war journalist). _Solution:_ by default we display a warning on the both sides, stating that transmitting that file via audio will be at least xx:xx long (algorithmic estimation for the best luck). Though, if both conversation sides insist on transmitting and both click their warnings, Briar will proceed. This will protect from accidental channel congestion, but as well obey operators' will.
**Backend technology**
There are a library and some impelementation examples at https://github.com/aicodix. All code there is licensed under 0BSD, making it perfectly legal to include into any FLOSS project.
The library acts as a software modem. It can transmit and receive any digital data using COFDM modulation of a sound carrier, and have buult-in error correction capabilities.
A notable implementation example is Android software named Rattlegram, avialable in the same repo and in Google Play. You can play around the technology without need to write code. My aforementioned tests of direct and radio-borne transmissions were performed using Rattlegram.
**Promises**
- I have a bit of Android development skills myself and can contribute to the implementation if approved.
- Feel free requesting me to conduct any other tests, I will be glad to help.https://code.briarproject.org/briar/briar/-/issues/2440Biometric login as an additional authentication method2023-07-31T16:12:24ZPatrick MaydellBiometric login as an additional authentication methodSometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using And...Sometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using Android's Biometric library.
https://developer.android.com/codelabs/biometric-login
I would like to try to commit this functionality to briar if you generally think this feature would be nice to have.https://code.briarproject.org/briar/briar/-/issues/2439Live Location Share with Duration2024-01-23T11:39:23ZVladislavLive Location Share with DurationWith this functionality, users will be able to share their real-time location with friends, family, or contacts in a secure and privacy-conscious manner.
Key Features:
1. Real-Time Location Sharing: Users should have the ability to ini...With this functionality, users will be able to share their real-time location with friends, family, or contacts in a secure and privacy-conscious manner.
Key Features:
1. Real-Time Location Sharing: Users should have the ability to initiate live location sharing, which enables their contacts to view their current location on a map for the duration of the sharing session.
2. Customizable Sharing Duration: The feature should allow users to set a specific duration for which they wish to share their live location. After the duration expires, the location sharing should automatically stop, ensuring users have complete control over their shared information.
3. Granular Control: Users should have the flexibility to choose whom they wish to share their live location with on a case-by-case basis, or to revoke location sharing at any time during an active session.
Benefits:
The addition of live location sharing with duration would offer several benefits to the Briar Messenger community:
1. Enhanced Safety: Users will have a practical tool for sharing their real-time location during critical situations, providing an extra layer of safety and reassurance.
2. Seamless Coordination: Friends and family can coordinate meet-ups more efficiently, as they'll be able to see each other's locations in real-time.
3. Increased User Engagement: The introduction of such a feature could attract new users to the platform and increase overall user engagement.
4. Comprehensive Application: By incorporating live location sharing, Briar Messenger can become a more comprehensive communication tool for both everyday use and emergency situationshttps://code.briarproject.org/briar/briar/-/issues/2438Incognito keyboard disables voice typing in Gboard2023-07-04T15:12:34ZakwizgranIncognito keyboard disables voice typing in GboardBriar uses the "no personalized learning" flag (incognito keyboard) for all text input. A user reported that this prevents them from using voice typing with Gboard.
We should probably provide a setting for this, as some users need voice...Briar uses the "no personalized learning" flag (incognito keyboard) for all text input. A user reported that this prevents them from using voice typing with Gboard.
We should probably provide a setting for this, as some users need voice typing for accessibility.https://code.briarproject.org/briar/briar/-/issues/2437Use `SystemClock#currentNetworkTimeClock()` to diagnose clock sync isses2023-06-28T13:56:25ZTorsten GroteUse `SystemClock#currentNetworkTimeClock()` to diagnose clock sync isses`SystemClock#currentNetworkTimeClock()` may be useful for diagnosing whether clock sync issues are due to misconfiguration or NTP tampering.`SystemClock#currentNetworkTimeClock()` may be useful for diagnosing whether clock sync issues are due to misconfiguration or NTP tampering.https://code.briarproject.org/briar/briar/-/issues/2436Explain signing of briar-headless on macOS2023-06-15T16:19:44ZSebastianExplain signing of briar-headless on macOSExplain how to sign using an Apple developer certificate and also how to sign using a certificate that has been created locally for debugging etc.Explain how to sign using an Apple developer certificate and also how to sign using a certificate that has been created locally for debugging etc.https://code.briarproject.org/briar/briar/-/issues/2435Camera can't focus on QR code in continuous-picture mode2023-06-08T12:13:45ZakwizgranCamera can't focus on QR code in continuous-picture modeA user reported that their camera can't focus on a QR code. The log shows that the camera's focus mode is continuous-picture (unlike #346 which concerns fixed-focus cameras).
* Android version: 10
* Phone model: Doogee S59 (S59_EEA)
* B...A user reported that their camera can't focus on a QR code. The log shows that the camera's focus mode is continuous-picture (unlike #346 which concerns fixed-focus cameras).
* Android version: 10
* Phone model: Doogee S59 (S59_EEA)
* Briar version: 1.5.3 (1f1a97f)
* User feedback: "I am writing again about the camera focus issue when adding a contact. It does not indicate the focus of the camera at all. Only with Briar do I have this problem."
Edited log:
```
05-26 10:17:14.255 I/CameraView: Opening camera
05-26 10:17:14.258 I/CameraView: Using back-facing camera
05-26 10:17:14.301 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
05-26 10:17:14.305 I/CameraView: Scene modes: [auto, action, portrait, landscape, night, night-portrait, theatre, beach, snow, sunset, steadyphoto, fireworks, sports, party, candlelight, barcode, hdr]
05-26 10:17:14.309 I/CameraView: Focus modes: [auto, macro, continuous-video, continuous-picture]
05-26 10:17:14.312 I/CameraView: Video stabilisation enabled: true
05-26 10:17:14.312 I/CameraView: Scene mode: barcode
05-26 10:17:14.312 I/CameraView: Focus mode: continuous-picture
05-26 10:17:14.312 I/CameraView: Flash mode: off
05-26 10:17:14.313 I/CameraView: Preview size: 1920x1080
05-26 10:17:14.368 I/CameraView: Surface created
05-26 10:17:14.368 I/CameraView: Surface changed: 720x1340
05-26 10:17:14.370 I/CameraView: Size 1920x1440, stretch 1.3958333, zoom 5.5296, score 0.12956055
05-26 10:17:14.370 I/CameraView: Size 1920x1088, stretch 1.0546296, zoom 4.17792, score 0.2269551
05-26 10:17:14.370 I/CameraView: Size 1920x1080, stretch 1.046875, zoom 4.1472, score 0.23032984
05-26 10:17:14.370 I/CameraView: Size 1600x1200, stretch 1.3958333, zoom 3.84, score 0.18656717
05-26 10:17:14.370 I/CameraView: Size 1440x1080, stretch 1.3958333, zoom 3.1104, score 0.23032986
05-26 10:17:14.370 I/CameraView: Size 1440x720, stretch 1.0746269, zoom 2.0736, score 0.44876328
05-26 10:17:14.370 I/CameraView: Size 1280x960, stretch 1.3958333, zoom 2.4576, score 0.2915112
05-26 10:17:14.370 I/CameraView: Size 1280x720, stretch 1.046875, zoom 1.8432, score 0.5182421
05-26 10:17:14.370 I/CameraView: Size 960x960, stretch 1.861111, zoom 1.8432, score 0.2915112
05-26 10:17:14.370 I/CameraView: Size 960x720, stretch 1.3958333, zoom 1.3824, score 0.5182422
05-26 10:17:14.370 I/CameraView: Size 960x540, stretch 1.046875, zoom 1.0368, score 0.92131937
05-26 10:17:14.370 I/CameraView: Size 960x480, stretch 1.0746269, zoom 1.0850694, score 0.8576
05-26 10:17:14.370 I/CameraView: Size 800x600, stretch 1.3958333, zoom 1.0416666, score 0.68776125
05-26 10:17:14.370 I/CameraView: Size 720x720, stretch 1.861111, zoom 1.0368, score 0.5182421
05-26 10:17:14.370 I/CameraView: Size 720x480, stretch 1.2407407, zoom 1.4467592, score 0.5570866
05-26 10:17:14.370 I/CameraView: Size 640x480, stretch 1.3958333, zoom 1.6276041, score 0.44016722
05-26 10:17:14.370 I/CameraView: Size 352x288, stretch 1.5227271, zoom 4.9321337, score 0.13315058
05-26 10:17:14.370 I/CameraView: Size 320x240, stretch 1.3958333, zoom 6.5104165, score 0.110041805
05-26 10:17:14.370 I/CameraView: Size 192x144, stretch 1.3958333, zoom 18.08449, score 0.03961505
05-26 10:17:14.370 I/CameraView: Size 192x108, stretch 1.046875, zoom 24.112654, score 0.039615046
05-26 10:17:14.371 I/CameraView: Size 176x144, stretch 1.5227271, zoom 19.728535, score 0.033287644
05-26 10:17:14.371 I/CameraView: Size 160x96, stretch 1.1166667, zoom 32.552082, score 0.027510447
05-26 10:17:14.371 I/CameraView: Best size 960x540
05-26 10:17:14.373 I/CameraView: Video stabilisation enabled: true
05-26 10:17:14.373 I/CameraView: Scene mode: barcode
05-26 10:17:14.373 I/CameraView: Focus mode: continuous-picture
05-26 10:17:14.373 I/CameraView: Flash mode: off
05-26 10:17:14.373 I/CameraView: Preview size: 960x540
05-26 10:17:14.373 I/CameraView: Starting preview
```https://code.briarproject.org/briar/briar/-/issues/2433IllegalStateException when storing attachments2023-08-24T14:33:28ZakwizgranIllegalStateException when storing attachments* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttac...* Android version: 9
* Phone model: Coolpad cp3648AT (full_cp3648at)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.attachment.AttachmentCreatorImpl.storeAttachments(AttachmentCreatorImpl.java:83)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeAttachments(ConversationViewModel.java:277)
at org.briarproject.briar.android.view.TextAttachmentController.onNewUris(TextAttachmentController.java:178)
at org.briarproject.briar.android.view.TextAttachmentController.onImageReceived(TextAttachmentController.java:160)
at org.briarproject.briar.android.conversation.ConversationActivity.onImagesChosen(ConversationActivity.java:797)
at org.briarproject.briar.android.conversation.ConversationActivity.$r8$lambda$Yw3fl1gK9EIeGMTHPyKDfNfoOkI(Unknown Source:0)
at org.briarproject.briar.android.conversation.ConversationActivity$$ExternalSyntheticLambda3.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry$1.onStateChanged(ActivityResultRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:265)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:307)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:148)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
at androidx.lifecycle.ReportFragment.onStart(ReportFragment.java:109)
at android.app.Fragment.performStart(Fragment.java:2548)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1334)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1576)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1637)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3046)
at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3003)
at android.app.FragmentController.dispatchStart(FragmentController.java:193)
at android.app.Activity.performStart(Activity.java:7165)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2968)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6704)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
```
Edited log:
```
01-12 20:00:06.622 I/ValidationManagerImpl: Validating message for org.briarproject.briar.messaging
01-12 20:00:06.831 I/ValidationManagerImpl: Delivering message for org.briarproject.briar.messaging
01-12 20:00:06.837 I/AutoDeleteManagerImpl: Mirroring auto-delete timer -1
01-12 20:00:06.940 I/ContactsViewModel: Conversation message tracked, updating item
01-12 20:00:11.836 I/BaseActivity: Destroying NavDrawerActivity
01-12 20:00:11.954 I/BaseActivity: Creating ConversationActivity
01-12 20:00:12.158 I/BaseActivity: Starting ConversationActivity
01-12 20:00:12.163 I/BaseActivity: Resuming ConversationActivity
01-12 20:00:12.233 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
01-12 20:00:25.255 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:00:31.004 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:00:32.000 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:00:43.142 I/BaseActivity: Pausing ConversationActivity
01-12 20:00:43.192 I/BaseActivity: Stopping ConversationActivity
01-12 20:00:43.886 W/AttachmentRetrieverImpl: org.briarproject.bramble.api.db.MessageDeletedException
org.briarproject.bramble.api.db.MessageDeletedException
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:1860)
at org.briarproject.bramble.db.JdbcDatabase.getMessage(JdbcDatabase.java:100)
at org.briarproject.bramble.db.DatabaseComponentImpl.getMessage(DatabaseComponentImpl.java:600)
at org.briarproject.bramble.client.ClientHelperImpl.getMessage(ClientHelperImpl.java:146)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:46)
at org.briarproject.briar.attachment.AttachmentReaderImpl.lambda$getAttachment$0(AttachmentReaderImpl.java:38)
at org.briarproject.briar.attachment.AttachmentReaderImpl.$r8$lambda$eCXQ8CbNfD8FSDzXT4wNgsUZiKY(Unknown Source:0)
at org.briarproject.briar.attachment.AttachmentReaderImpl$$ExternalSyntheticLambda0.call(Unknown Source:4)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:212)
at org.briarproject.briar.attachment.AttachmentReaderImpl.getAttachment(AttachmentReaderImpl.java:38)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.loadAttachmentItem(AttachmentRetrieverImpl.java:189)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.lambda$getAttachmentItems$0(AttachmentRetrieverImpl.java:129)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl.$r8$lambda$IddQB3KJutztIvZ-pFcOKTYs1rM(Unknown Source:0)
at org.briarproject.briar.android.attachment.AttachmentRetrieverImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
01-12 20:01:00.181 I/BaseActivity: Starting ConversationActivity
01-12 20:01:00.308 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:07.726 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:17.992 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:18.633 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:19.034 I/ConversationActivity: Eagerly loading text for latest message
01-12 20:01:19.041 I/ConversationActivity: Concurrent update, reloading
01-12 20:01:19.064 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
01-12 20:01:23.296 I/BaseActivity: Starting ConversationActivity
01-12 20:01:23.335 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:23.550 I/ImageCompressorImpl: Original image size: 720x1440
01-12 20:01:23.550 I/ImageCompressorImpl: Scaling attachment by factor of 2
01-12 20:01:23.784 I/ImageCompressorImpl: Compressed image to 32229 bytes, quality 70
01-12 20:01:25.507 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:26.209 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:27.381 I/BaseActivity: Starting ConversationActivity
01-12 20:01:27.383 I/BaseActivity: Resuming ConversationActivity
01-12 20:01:29.743 I/BaseActivity: Pausing ConversationActivity
01-12 20:01:30.425 I/BaseActivity: Stopping ConversationActivity
01-12 20:01:30.751 I/BaseActivity: Starting ConversationActivity
01-12 20:01:30.756 W/AttachmentCreatorImpl: Task already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Result already exists!
01-12 20:01:30.756 W/AttachmentCreatorImpl: Uris available: [content://com.android.providers.media.documents/document/image%3A10277]
```
This looks similar to #1647.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2432IllegalStateException from BluetoothConnectionLimiterImpl2023-05-30T15:27:15ZakwizgranIllegalStateException from BluetoothConnectionLimiterImpl* Android version: 10
* Phone models: Motorola Moto G(8) Plus (doha_reteu_n)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.bramble.plugin.bluetooth.BluetoothConnectionLimit...* Android version: 10
* Phone models: Motorola Moto G(8) Plus (doha_reteu_n)
* Briar version: 1.4.11 (2aa39e4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.bramble.plugin.bluetooth.BluetoothConnectionLimiterImpl.endLimiting(BluetoothConnectionLimiterImpl.java:53)
at org.briarproject.bramble.plugin.bluetooth.AbstractBluetoothPlugin.eventOccurred(AbstractBluetoothPlugin.java:523)
at org.briarproject.bramble.event.EventBusImpl.lambda$broadcast$0(EventBusImpl.java:42)
at org.briarproject.bramble.event.EventBusImpl.$r8$lambda$clxOMxNLcHINGTGi9tkg-7meojQ(Unknown Source:0)
at org.briarproject.bramble.event.EventBusImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:7582)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
```
Edited log:
```
10-02 08:57:47.978 I/AddNearbyContactViewModel: Got result from decoder
... ditto ...
10-02 08:57:48.310 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:48.328 I/PollerImpl: Polling plugin org.briarproject.bramble.bluetooth
10-02 08:57:48.337 I/ConnectionRegistryImpl: 1 contacts connected or better: org.briarproject.bramble.bluetooth
10-02 08:57:48.350 I/AddNearbyContactViewModel: Got result from decoder
... ditto ...
10-02 08:57:50.709 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:50.760 I/KeyAgreementConnector: Listening via org.briarproject.bramble.bluetooth
10-02 08:57:50.772 I/AddNearbyContactViewModel: Got result from decoder
10-02 08:57:50.783 I/KeyAgreementConnector: Listening via org.briarproject.bramble.lan
10-02 08:57:50.784 I/BluetoothConnectionLimiterImpl: Limiting started
10-02 08:57:50.784 I/AddNearbyContactViewModel: KeyAgreementListeningEvent received
10-02 08:57:50.784 I/KeyAgreementConnector: Stopping BQP listeners
10-02 08:57:50.785 I/ConnectionChooserImpl: Closing 0 unused connections
10-02 08:57:50.786 I/AddNearbyContactViewModel: Local payload is 40 bytes
10-02 08:57:50.786 I/KeyAgreementConnector: Stopping BQP listeners
10-02 08:57:50.786 I/ConnectionChooserImpl: Closing 0 unused connections
10-02 08:57:50.787 I/ConnectionChooserImpl: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
10-02 08:57:50.788 I/KeyAgreementConnector: Starting BQP listeners
10-02 08:57:50.788 I/ConnectionChooserImpl: java.net.SocketException: Socket closed
10-02 08:57:50.788 I/AbstractBluetoothPlugin: Key agreement UUID be4822aa-1ecc-3c82-b00a-7e234a5efdba
10-02 08:57:50.786 I/BluetoothConnectionLimiterImpl: Limiting ended
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2431MailboxIntegrationTest sometimes fails in CI pipelines2023-08-28T16:03:06ZakwizgranMailboxIntegrationTest sometimes fails in CI pipelineshttps://code.briarproject.org/briar/briar/-/issues/2430Icons are missing from our F-Droid repo2023-04-28T17:31:20ZakwizgranIcons are missing from our F-Droid repoOur F-Droid repo doesn't appear to have up-to-date icons for Briar or Mailbox. The newest icons for Briar are for the long-obsolete 1.1.6 release.Our F-Droid repo doesn't appear to have up-to-date icons for Briar or Mailbox. The newest icons for Briar are for the long-obsolete 1.1.6 release.https://code.briarproject.org/briar/briar/-/issues/2428AssertionError when loading image preview2023-04-18T14:43:25ZakwizgranAssertionError when loading image preview* Android version: 10
* Phone model: Samsung SM-A115U (a11qsq)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Crash when sending image."
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.ImageP...* Android version: 10
* Phone model: Samsung SM-A115U (a11qsq)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Crash when sending image."
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.ImagePreviewAdapter.loadItemPreview(ImagePreviewAdapter.java:57)
at org.briarproject.briar.android.view.ImagePreview.loadPreviewImage(ImagePreview.java:80)
at org.briarproject.briar.android.view.TextAttachmentController.onNewAttachmentItemResults(TextAttachmentController.java:206)
at org.briarproject.briar.android.view.TextAttachmentController.access$000(TextAttachmentController.java:44)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:187)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:179)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:93)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8107)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
```
Edited log:
```
03-18 20:52:32.715 I/BaseActivity: Starting ConversationActivity
03-18 20:52:32.720 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:33.024 I/ImageCompressorImpl: Original image size: 682x1024
03-18 20:52:33.024 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-18 20:52:33.098 I/ImageCompressorImpl: Compressed image to 30054 bytes, quality 70
03-18 20:52:33.903 I/BaseActivity: Pausing ConversationActivity
03-18 20:52:33.924 I/BaseActivity: Starting NavDrawerActivity
03-18 20:52:33.925 I/BaseActivity: Resuming NavDrawerActivity
03-18 20:52:34.396 I/BaseActivity: Stopping ConversationActivity
03-18 20:52:34.397 I/BaseActivity: Destroying ConversationActivity
03-18 20:52:35.287 I/BaseActivity: Pausing NavDrawerActivity
03-18 20:52:35.310 I/BaseActivity: Creating ConversationActivity
03-18 20:52:35.333 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
03-18 20:52:35.382 I/BaseActivity: Starting ConversationActivity
03-18 20:52:35.384 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:35.886 I/BaseActivity: Stopping NavDrawerActivity
03-18 20:52:36.322 I/ConversationActivity: Eagerly loading text for latest message
03-18 20:52:36.794 I/BaseActivity: Pausing ConversationActivity
03-18 20:52:37.403 I/BaseActivity: Stopping ConversationActivity
03-18 20:52:41.046 I/BaseActivity: Starting ConversationActivity
03-18 20:52:41.048 I/BaseActivity: Resuming ConversationActivity
03-18 20:52:41.076 I/ImageCompressorImpl: Original image size: 720x1560
03-18 20:52:41.077 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-18 20:52:41.177 I/ImageCompressorImpl: Compressed image to 29301 bytes, quality 70
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/2427Don't scroll to bottom when accepting invitations2023-04-09T01:16:48Zre tiolusDon't scroll to bottom when accepting invitationsIt's quite annoying, when accepting a lot of invites that UI scroll back to the bottom of the conversation. Would be also cool that the "UP" arrow goes to the first unread message of the chat.It's quite annoying, when accepting a lot of invites that UI scroll back to the bottom of the conversation. Would be also cool that the "UP" arrow goes to the first unread message of the chat.https://code.briarproject.org/briar/briar/-/issues/2426IllegalArgumentException when receiving ACTIVATE message as introducee2023-03-31T15:22:30ZakwizgranIllegalArgumentException when receiving ACTIVATE message as introduceeStacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.transport.TransportKeyManagerImpl.activateKeys(TransportKeyManagerImpl.java:285)
at org.briarproject.bramble.transport.KeyManagerImpl.lambda$activateKeys$2(...Stacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.transport.TransportKeyManagerImpl.activateKeys(TransportKeyManagerImpl.java:285)
at org.briarproject.bramble.transport.KeyManagerImpl.lambda$activateKeys$2(KeyManagerImpl.java:176)
at org.briarproject.bramble.transport.KeyManagerImpl.$r8$lambda$hZAivP_ym8Z94pCCnZpsDSza1P4(Unknown Source:0)
at org.briarproject.bramble.transport.KeyManagerImpl$$ExternalSyntheticLambda8.run(Unknown Source:4)
at org.briarproject.bramble.transport.KeyManagerImpl.withManager(KeyManagerImpl.java:268)
at org.briarproject.bramble.transport.KeyManagerImpl.activateKeys(KeyManagerImpl.java:175)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onRemoteActivate(IntroduceeProtocolEngine.java:511)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onActivateMessage(IntroduceeProtocolEngine.java:234)
at org.briarproject.briar.introduction.IntroduceeProtocolEngine.onActivateMessage(IntroduceeProtocolEngine.java:63)
at org.briarproject.briar.introduction.IntroductionManagerImpl.handleMessage(IntroductionManagerImpl.java:253)
at org.briarproject.briar.introduction.IntroductionManagerImpl.incomingMessage(IntroductionManagerImpl.java:211)
at org.briarproject.bramble.api.client.BdfIncomingMessageHook.incomingMessage(BdfIncomingMessageHook.java:63)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.deliverMessage(ValidationManagerImpl.java:333)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.lambda$storeMessageContext$6(ValidationManagerImpl.java:290)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.$r8$lambda$kV95asJ25004Lz0CviD-sa65BcQ(Unknown Source:0)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl$$ExternalSyntheticLambda18.run(Unknown Source:19)
at org.briarproject.bramble.db.DatabaseComponentImpl.transaction(DatabaseComponentImpl.java:200)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.storeMessageContext(ValidationManagerImpl.java:266)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.lambda$storeMessageContextAsync$5(ValidationManagerImpl.java:255)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl.$r8$lambda$tOT1oX1UbzoJ5r_HnnaJxOWFjgE(Unknown Source:0)
at org.briarproject.bramble.sync.validation.ValidationManagerImpl$$ExternalSyntheticLambda8.run(Unknown Source:10)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
```
The user reported that they were introduced to the contact in question, but couldn't send messages to them. They then readded the contact by exchanging links.
Possibly related to #2085?Android 1.4https://code.briarproject.org/briar/briar/-/issues/2425List of RSS feeds doesn't update when feed is removed2023-03-27T11:11:22ZakwizgranList of RSS feeds doesn't update when feed is removedThe list of RSS feeds doesn't update when the feed is removed by unsubscribing via the feed's overflow menu, rather than using the delete button in the list of RSS feeds.
Steps to reproduce:
* Add an RSS feed
* Tap the entry in the list...The list of RSS feeds doesn't update when the feed is removed by unsubscribing via the feed's overflow menu, rather than using the delete button in the list of RSS feeds.
Steps to reproduce:
* Add an RSS feed
* Tap the entry in the list of RSS feeds to open the feed
* Unsubscribe via the overflow menu ("Remove blog")
* Expected: The list of RSS feeds is shown, it's now empty
* Actual: The list of RSS feeds is show, it still contains the removed feed. Tapping the feed again causes a NoSuchGroupException (error toast, no crash)