briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-10-18T17:03:39Zhttps://code.briarproject.org/briar/briar/-/issues/2451Automatically delete old RSS posts2023-10-18T17:03:39ZakwizgranAutomatically delete old RSS postsA user suggested that old RSS posts should be deleted automatically to improve performance. Potentially this could be applied to all blogs (it's more complex for forums and groups due to threading).A user suggested that old RSS posts should be deleted automatically to improve performance. Potentially this could be applied to all blogs (it's more complex for forums and groups due to threading).https://code.briarproject.org/briar/briar-desktop/-/issues/551What port is used for local connections?2023-10-09T11:16:04ZAminda SuomalainenWhat port is used for local connections?I know Briar Desktop will pick a port and attempt to stick to it for local connections.
- https://matrix.to/#/%23briar_desktop%3Atchncs.de/%24FKJk80vFnp2Fqnyov8g2S1QGJuY8SrJBlPjjqGSaW5M?via=pikaviestin.fi&via=matrix.org&via=dendrite.mat...I know Briar Desktop will pick a port and attempt to stick to it for local connections.
- https://matrix.to/#/%23briar_desktop%3Atchncs.de/%24FKJk80vFnp2Fqnyov8g2S1QGJuY8SrJBlPjjqGSaW5M?via=pikaviestin.fi&via=matrix.org&via=dendrite.matrix.org&via=tchncs.de
However what is that port which is unique to every installation of Briar Desktop? I need to know so I can open it in firewall. I think it should be displayed in Briar Desktop settings or info page, possibly even allowing it to be set by hand.
Traditionally I have discovered it by `sudo netstat -plnt | grep java`, but SteamOS doesn't ship with `netstat`.https://code.briarproject.org/briar/briar/-/issues/2450Add fallback mailbox pairing option to Briar2023-10-06T14:23:30ZLaurens NikolaisenAdd fallback mailbox pairing option to BriarIf pairing with the mailbox app using a QR Code does not work on the Android Briar App, there is no way to pair the App with the mailbox. Please do add an option to paste the pairing link instead.
Like seen in #2449 this could be the ca...If pairing with the mailbox app using a QR Code does not work on the Android Briar App, there is no way to pair the App with the mailbox. Please do add an option to paste the pairing link instead.
Like seen in #2449 this could be the case sometimes.
Thankshttps://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-desktop/-/issues/548Option to mark all blog posts as read2023-08-31T13:43:30ZMikolai GütschowOption to mark all blog posts as readhttps://code.briarproject.org/briar/briar-desktop/-/issues/546Make sure HtmlText Composable is secure2023-08-31T11:33:04ZSebastianMake sure HtmlText Composable is securehttps://code.briarproject.org/briar/briar-desktop/-/issues/545Allow plain text blog posts with newlines in them2023-09-01T09:12:48ZSebastianAllow plain text blog posts with newlines in themCurrently, all blog posts are interpreted as HTML, which basically means newlines are ignored.
I think that's not so nice because I think most people would expect that the plain text formatting in the text input works for blog posts.
I...Currently, all blog posts are interpreted as HTML, which basically means newlines are ignored.
I think that's not so nice because I think most people would expect that the plain text formatting in the text input works for blog posts.
It's the same on Android though.
I think it would be good to use some kind of heuristic to determine if a piece of text is actual plain text / no HTML and display it as regular text in that case.https://code.briarproject.org/briar/briar-desktop/-/issues/544Material style buttons for add contact dialog2023-08-31T10:20:33ZSebastianMaterial style buttons for add contact dialogthe buttons in the add contact dialog look different than the other dialog buttons which are AlertDialogs.the buttons in the add contact dialog look different than the other dialog buttons which are AlertDialogs.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-desktop/-/issues/541Feature request: add riscv64 architecture (Licheepi4A and VisionfiveV2 boards)2023-08-21T13:11:31ZRice BoxFeature request: add riscv64 architecture (Licheepi4A and VisionfiveV2 boards)Hello,
I already asked this on IRC but I wanted to add this request here too. Could you please check if you have the time to add that architecture (riscv64)? Tor binary exists on riscv64 and Java runs fine.
Thank you!Hello,
I already asked this on IRC but I wanted to add this request here too. Could you please check if you have the time to add that architecture (riscv64)? Tor binary exists on riscv64 and Java runs fine.
Thank you!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-desktop/-/issues/540Make it portable, rootless.2023-08-08T07:06:15ZVladislavMake it portable, rootless.Allow installing and use of the briar desktop without root rights on Windows.Allow installing and use of the briar desktop without root rights on Windows.https://code.briarproject.org/briar/briar-desktop/-/issues/539Ability to remove blogs2023-08-25T13:33:34ZMikolai GütschowAbility to remove blogsI'm actually not fully sure what that means, but saw the option on Android.
It is worth to notice that it is not possible to remove one's own blog.I'm actually not fully sure what that means, but saw the option on Android.
It is worth to notice that it is not possible to remove one's own blog.Desktop 0.7.0https://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/website/-/issues/44Update transports image on How it works page2023-10-02T11:39:59ZNicoUpdate transports image on How it works page![Briar can sync via Bluetooth/Wi-Fi/Tor](https://code.briarproject.org/briar/website/-/raw/2399a954f54ec218993338127283fc0801879db1/static/img/diagram_secure.png)
On this image, memory cards are missing. I'd like to add them, but I can...![Briar can sync via Bluetooth/Wi-Fi/Tor](https://code.briarproject.org/briar/website/-/raw/2399a954f54ec218993338127283fc0801879db1/static/img/diagram_secure.png)
On this image, memory cards are missing. I'd like to add them, but I can't find the source file of it. @akwizgran Do you have it? Otherwise I can create a new (vector-based) image, but that would be much more work. Therefore, obtaining the source file is preferred :slight_smile:https://code.briarproject.org/briar/briar-desktop/-/issues/538Add command line `--test-tor` or similar to check Tor is working properly2023-07-26T14:25:27ZSebastianAdd command line `--test-tor` or similar to check Tor is working properlyWhile trying to improve the situation with #486 and improving the NixOS package, I got an idea that might be helpful for 3rd party maintainers. If we added a `--test-tor` switch to the executable with the behavior of spinning up a `TorWr...While trying to improve the situation with #486 and improving the NixOS package, I got an idea that might be helpful for 3rd party maintainers. If we added a `--test-tor` switch to the executable with the behavior of spinning up a `TorWrapper` and making sure it can bootstrap, that could be used in CI pipelines to make sure they don't screw up things somehow. I got inspired by a PR on Github where I've seen that a bunch of pipelines have been started for the changes, not just for Linux but also for macOS and I would guess that all kinds of things could go wrong if they attempt to package custom tor binaries for macOS like the do on Linux: https://github.com/NixOS/nixpkgs/pull/245398#issuecomment-1650054652https://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 situations