briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-11-17T16:09:10Zhttps://code.briarproject.org/briar/briar/-/issues/1347Annotate UI methods that run on background threads2020-11-17T16:09:10ZakwizgranAnnotate UI methods that run on background threadsWe tend to assume that UI components are only accessed on the UI thread and don't need to be thread-safe, but sometimes this isn't true. Create an annotation for UI methods that run on background threads. (Methods that run on particular ...We tend to assume that UI components are only accessed on the UI thread and don't need to be thread-safe, but sometimes this isn't true. Create an annotation for UI methods that run on background threads. (Methods that run on particular executors can use the existing executor annotations.)https://code.briarproject.org/briar/briar/-/issues/1346Add LaTeX support for messages.2020-11-16T15:38:15ZIdRather NotAdd LaTeX support for messages.Just as the title says, LaTeX support(or something like it) for Mathematical and Chemical formulas and equations would be a really nice thing to have and a feature that would be a reason for academic people (at least those in science cou...Just as the title says, LaTeX support(or something like it) for Mathematical and Chemical formulas and equations would be a really nice thing to have and a feature that would be a reason for academic people (at least those in science courses) to switch to Briar or use it to discuss assignments/research.https://code.briarproject.org/briar/briar/-/issues/1345Add panic button response that locks app2020-11-16T15:35:41ZakwizgranAdd panic button response that locks appWhen the PIN lock has been implemented (#1247), we could provide the option to lock the app instead of signing out when a panic button's pressed. This would make it possible to send panic messages via Briar (#212).When the PIN lock has been implemented (#1247), we could provide the option to lock the app instead of signing out when a panic button's pressed. This would make it possible to send panic messages via Briar (#212).https://code.briarproject.org/briar/briar/-/issues/1342BriarService dies, but retains database key2020-11-17T16:11:35ZTorsten GroteBriarService dies, but retains database keySome time ago, I opened Briar and the app was starting the `NavDrawerActivity` strangely slow. When it came up, all contacts were offline and all plugins in the NavDrawer were also offline. They came online slowly afterwards, but the app...Some time ago, I opened Briar and the app was starting the `NavDrawerActivity` strangely slow. When it came up, all contacts were offline and all plugins in the NavDrawer were also offline. They came online slowly afterwards, but the app seemed to have been dead. The first time, I couldn't get useful logs, but just now it happened again and I could retrieve the following log.
It looks like the app was kind of restarting at 13:42 but without creating/starting `BriarService`. When I opened the app at 15:40 the service got finally started and still found the key in `AndroidDatabaseConfig`.
```
07-12 13:42:38.551 org.briarproject.briar.android I/BriarApplicationImpl: Created
07-12 13:42:38.699 org.briarproject.briar.android I/AndroidDatabaseConfig: Database directory: /data/user/0/org.briarproject.briar.android/app_db
07-12 13:42:38.721 org.briarproject.briar.android I/CryptoComponentImpl: Default SecureRandom: AndroidOpenSSL SHA1PRNG
07-12 13:42:38.827 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=29KB, data=20KB
07-12 13:42:38.828 org.briarproject.briar.android I/zygote64: After code cache collection, code=29KB, data=20KB
Increasing code cache capacity to 128KB
07-12 13:42:38.927 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=61KB, data=40KB
After code cache collection, code=59KB, data=40KB
Increasing code cache capacity to 256KB
07-12 13:42:38.932 org.briarproject.briar.android I/CryptoComponentImpl: Installed SecureRandom: LinuxPRNG SHA1PRNG
07-12 13:42:39.970 org.briarproject.briar.android I/LifecycleManagerImpl: Registering executor TimeLoggingExecutor
07-12 13:42:39.971 org.briarproject.briar.android I/LifecycleManagerImpl: Registering executor ThreadPoolExecutor
Registering executor ScheduledThreadPoolExecutor
07-12 13:42:39.981 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service KeyManagerImpl
Registering executor TimeLoggingExecutor
07-12 13:42:39.999 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service ValidationManagerImpl
07-12 13:42:40.015 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client ClientVersioningManagerImpl
Registering service ClientVersioningManagerImpl
07-12 13:42:40.020 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client TransportPropertyManagerImpl
07-12 13:42:40.021 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service PluginManagerImpl
07-12 13:42:40.034 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client BlogManagerImpl
07-12 13:42:40.041 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client FeedManagerImpl
07-12 13:42:40.069 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client GroupInvitationManagerImpl
07-12 13:42:40.072 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client MessagingManagerImpl
07-12 13:42:40.090 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client ForumSharingManagerImpl
07-12 13:42:40.094 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client BlogSharingManagerImpl
07-12 13:42:40.116 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client IntroductionManagerImpl
07-12 13:42:40.129 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service AndroidNotificationManagerImpl
07-12 13:42:40.130 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service NetworkUsageLogger
07-12 13:42:40.131 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service DozeWatchdogImpl
07-12 13:42:40.132 org.briarproject.briar.android D/StrictMode: StrictMode policy violation; ~duration=1347 ms: android.os.StrictMode$StrictModeUnbufferedIOViolation: policy=65596 violation=32
at android.os.StrictMode$AndroidBlockGuardPolicy.onUnbufferedIO(StrictMode.java:1427)
at libcore.io.IoTracker.trackIo(IoTracker.java:35)
at java.io.FileOutputStream.write(FileOutputStream.java:325)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at java.io.FilterOutputStream.write(FilterOutputStream.java:97)
at org.briarproject.bramble.system.AbstractSecureRandomProvider.writeToEntropyPool(AbstractSecureRandomProvider.java:30)
at org.briarproject.bramble.system.AndroidSecureRandomProvider.writeToEntropyPool(AndroidSecureRandomProvider.java:42)
at org.briarproject.bramble.system.LinuxSecureRandomProvider.writeSeed(LinuxSecureRandomProvider.java:48)
at org.briarproject.bramble.system.AndroidSecureRandomProvider.writeSeed(AndroidSecureRandomProvider.java:72)
at org.briarproject.bramble.system.LinuxSecureRandomProvider.getProvider(LinuxSecureRandomProvider.java:40)
at org.briarproject.bramble.crypto.CryptoComponentImpl.<init>(CryptoComponentImpl.java:65)
at org.briarproject.bramble.crypto.CryptoModule.provideCryptoComponent(CryptoModule.java:32)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:26)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:9)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:39)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:13)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.transport.TransportModule_ProvideKeyManagerFactory.get(TransportModule_ProvideKeyManagerFactory.java:30)
at org.briarproject.bramble.transport.TransportModule_ProvideKeyManagerFactory.get(TransportModule_ProvideKeyManagerFactory.java:10)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.contact.ContactManagerImpl_Factory.get(ContactManagerImpl_Factory.java:23)
at org.briarproject.bramble.contact.ContactManagerImpl_Factory.get(ContactManagerImpl_Factory.java:9)
at org.briarproject.bramble.contact.ContactModule_GetContactManagerFactory.get(ContactModule_GetContactManagerFactory.java:22)
at org.briarproject.bramble.contact.ContactModule_GetContactManagerFactory.get(ContactModule_GetContactManagerFactory.java:8)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.contact.ContactModule$EagerSingletons_MembersInjector.injectMembers(ContactModule$EagerSingletons_MembersInjector.java:23)
at org.briarproject.bramble.contact.ContactModule$EagerSingletons_MembersInjector.injectMembers(ContactModule$EagerSingletons_MembersInjector.java:9)
at org.briarproject.briar.android.DaggerAndroidComponent.inject(DaggerAndroidComponent.java:698)
at org.briarproject.bramble.BrambleCoreModule.initEagerSingletons(BrambleCoreModule.java:55)
at org.briarproject.briar.android.BriarApplicationImpl.onCreate(BriarApplicationImpl.java:117)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
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:807)
07-12 13:42:40.337 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service ScreenFilterMonitorImpl
07-12 13:42:40.343 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.740 org.briarproject.briar.android I/BriarRecyclerView: Adding Handler Callback
07-12 13:42:40.744 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.801 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key directory: /data/user/0/org.briarproject.briar.android/app_key
07-12 13:42:40.802 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.803 org.briarproject.briar.android I/ConfigControllerImpl: No database key in preferences
07-12 13:42:40.807 org.briarproject.briar.android I/ConfigControllerImpl: Found database key in primary file
07-12 13:42:40.808 org.briarproject.briar.android I/AndroidDatabaseConfig: Files in /data/user/0/org.briarproject.briar.android/app_db:
db.mv.db
Database exists: true
07-12 13:42:40.911 org.briarproject.briar.android I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
07-12 13:42:41.072 org.briarproject.briar.android I/zygote64: Do full code cache collection, code=124KB, data=90KB
07-12 13:42:41.073 org.briarproject.briar.android I/zygote64: After code cache collection, code=90KB, data=45KB
07-12 13:42:41.137 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:41.243 org.briarproject.briar.android I/Adreno: QUALCOMM build : 8c8f5af, Ic7262d4df1
Build Date : 10/28/17
OpenGL ES Shader Compiler Version: EV031.20.00.04
Local Branch :
Remote Branch : quic/gfx-adreno.lnx.1.9.r3-rel
Remote Branch : NONE
Reconstruct Branch : NOTHING
07-12 13:42:41.249 org.briarproject.briar.android I/Adreno: PFP: 0x005ff087, ME: 0x005ff063
07-12 13:42:41.406 org.briarproject.briar.android I/BriarRecyclerView: Removing Handler Callback
07-12 13:42:43.020 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=123KB, data=76KB
After code cache collection, code=123KB, data=76KB
Increasing code cache capacity to 512KB
07-12 13:42:44.903 org.briarproject.briar.android I/ConfigControllerImpl: No database key in preferences
07-12 13:42:44.907 org.briarproject.briar.android I/ConfigControllerImpl: Found database key in primary file
07-12 13:42:45.758 org.briarproject.briar.android I/AndroidDatabaseConfig: Setting database key
07-12 15:40:21.565 org.briarproject.briar.android I/BriarRecyclerView: Adding Handler Callback
07-12 15:40:21.567 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:21.589 org.briarproject.briar.android I/BriarService: Created
07-12 15:40:21.589 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:21.611 org.briarproject.briar.android I/AndroidDatabaseConfig: Local author name has been set: false
07-12 15:40:21.615 org.briarproject.briar.android I/LifecycleManagerImpl: Starting services
07-12 15:40:21.617 org.briarproject.briar.android I/AndroidDatabaseConfig: Files in /data/user/0/org.briarproject.briar.android/app_db:
07-12 15:40:21.618 org.briarproject.briar.android I/AndroidDatabaseConfig: db.mv.db
Database exists: true
07-12 15:40:21.763 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:22.086 org.briarproject.briar.android I/zygote64: Do full code cache collection, code=237KB, data=201KB
07-12 15:40:22.087 org.briarproject.briar.android I/zygote64: After code cache collection, code=205KB, data=138KB
07-12 15:40:25.581 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=250KB, data=146KB
After code cache collection, code=249KB, data=146KB
Increasing code cache capacity to 1024KB
07-12 15:40:27.227 org.briarproject.briar.android I/IdentityManagerImpl: Local author loaded
07-12 15:40:28.027 org.briarproject.briar.android I/PluginManagerImpl: Starting poller
07-12 15:40:28.030 org.briarproject.briar.android I/PluginManagerImpl: Starting simplex plugins
Starting duplex plugins
07-12 15:40:28.044 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:28.056 org.briarproject.briar.android I/TorPlugin: Starting Tor
```https://code.briarproject.org/briar/briar/-/issues/1337Scroll to bottom when writing new post in private group2020-11-18T01:46:13ZakwizgranScroll to bottom when writing new post in private groupUser feedback: "In private conversations, when you tap the text bar to begin typing and it expands, the message history lifts up as well so that you are still seeing the most recent message above what you are typing. In groups, that is n...User feedback: "In private conversations, when you tap the text bar to begin typing and it expands, the message history lifts up as well so that you are still seeing the most recent message above what you are typing. In groups, that is not the case. When the typing bar expands, it covers the most recent messages and you have to scroll down to see them. I find the behavior in the private conversations more convenient."https://code.briarproject.org/briar/briar/-/issues/1335Delete account without signing out2023-07-11T10:11:01ZakwizgranDelete account without signing outA user asked for the ability to delete their account in an emergency without signing out and using the "forgot password" button.A user asked for the ability to delete their account in an emergency without signing out and using the "forgot password" button.https://code.briarproject.org/briar/briar/-/issues/1333Screen overlay warning is shown when dismissing dialog2020-11-18T01:44:17ZakwizgranScreen overlay warning is shown when dismissing dialogWhile smoke testing the 1.0.11 release on the Galaxy Nexus (Android 4.3), I saw the screen overlay warning after dismissing the error dialog and tapping the URL text field in the RSS import screen. Perhaps an overlay is used to animate t...While smoke testing the 1.0.11 release on the Galaxy Nexus (Android 4.3), I saw the screen overlay warning after dismissing the error dialog and tapping the URL text field in the RSS import screen. Perhaps an overlay is used to animate the dismissal of the dialog? I wasn't able to reproduce the issue.https://code.briarproject.org/briar/briar/-/issues/1331Tor warns about unused DT entry2020-11-16T11:01:26ZakwizgranTor warns about unused DT entryTor prints the following warning on the Moto G 4G (Android 5.1):
```
06-23 11:36:49.198 I/TorPlugin(13958): Jun 23 11:36:49.196 [notice] Tor 0.2.9.15 (git-4e6ac9830840448e) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o an...Tor prints the following warning on the Moto G 4G (Android 5.1):
```
06-23 11:36:49.198 I/TorPlugin(13958): Jun 23 11:36:49.196 [notice] Tor 0.2.9.15 (git-4e6ac9830840448e) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o and Zlib 1.2.8.
06-23 11:36:49.198 I/TorPlugin(13958): WARNING: linker: /data/data/org.briarproject.briar.android.debug/app_tor/tor: unused DT entry: type 0x6ffffffe arg 0x5347c
06-23 11:36:49.200 I/TorPlugin(13958): Jun 23 11:36:49.199 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
06-23 11:36:49.200 I/TorPlugin(13958): WARNING: linker: /data/data/org.briarproject.briar.android.debug/app_tor/tor: unused DT entry: type 0x6fffffff arg 0x3
06-23 11:36:49.202 I/TorPlugin(13958): Jun 23 11:36:49.201 [notice] Read configuration file "/data/data/org.briarproject.briar.android.debug/app_tor/torrc".
06-23 11:36:49.246 I/TorPlugin(13958): Jun 23 11:36:49.226 [notice] Opening Control listener on 127.0.0.1:59051
06-23 11:36:49.247 I/TorPlugin(13958): Jun 23 11:36:49.226 [notice] DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
```
[This StackOverflow answer](https://stackoverflow.com/questions/33206409/unused-dt-entry-type-0x1d-arg/41900551#41900551) suggests the warning is caused by using the wrong NDK compiler flags, and may be upgraded to an error in future Android versions.https://code.briarproject.org/briar/briar/-/issues/1330Can't click "got it" during password setup2019-02-28T19:44:25ZShannon StorkCan't click "got it" during password setupWhen a tester set up a password and clicked the (i) on the top right, he couldn't click "got it" and had to tap out of the box. Device: Samsung s8+ (Android 8.x)When a tester set up a password and clicked the (i) on the top right, he couldn't click "got it" and had to tap out of the box. Device: Samsung s8+ (Android 8.x)https://code.briarproject.org/briar/briar/-/issues/1326Prevent old messages from aborting client protocols2020-11-18T01:39:44ZakwizgranPrevent old messages from aborting client protocolsSome client protocols that use an abort message to reset the state machine are vulnerable to a race condition where incoming messages that were already in flight when the abort message was sent are received after resetting, causing furth...Some client protocols that use an abort message to reset the state machine are vulnerable to a race condition where incoming messages that were already in flight when the abort message was sent are received after resetting, causing further aborts. This is harmless if the state machine is still in the start state when the messages are received, but it may cause problems if the state machine has moved out of the start state.
The problem can be avoided by using an abort counter:
* Each party keeps a counter for each other party they sync with
* The counter is part of the session state
* The counter is initialised to zero
* The counter is reset to zero if the other party is removed as a contact
* The counter is included in every outgoing message
* Incoming messages with counters lower than the local counter are ignored
* The counter is incremented after sending or receiving an abort message
If two parties concurrently abort the protocol they may ignore each other's abort messages, but this appears to be harmless: either both will increment their counters once, or both twice.
Client protocols that use abort messages without counters will need to be upgraded to accommodate counters. It may be possible to do this with a minor version upgrade.https://code.briarproject.org/briar/briar/-/issues/1325Use Psiphon when Tor bridges are not reachable2020-11-18T01:38:59ZTorsten GroteUse Psiphon when Tor bridges are not reachableWe have been encouraged to use [Psiphon](https://www.psiphon.ca/) as a circumvention technology.
Here's how to add it:
> - Start the [Psiphon Library](https://github.com/Psiphon-Labs/psiphon-tunnel-core/tree/master/MobileLibrary/Androi...We have been encouraged to use [Psiphon](https://www.psiphon.ca/) as a circumvention technology.
Here's how to add it:
> - Start the [Psiphon Library](https://github.com/Psiphon-Labs/psiphon-tunnel-core/tree/master/MobileLibrary/Android) and get its SOCKS proxy port
> - Configure the Tor client run by Briar to proxy through Psiphon using the "Socks5Proxy" config setting (https://www.torproject.org/docs/tor-manual.html.en)
> - The Tor client traffic egresses from the Psiphon server, connects to a Tor node, and gets to hidden services from there. Psiphon doesn't need to know about the hidden service part.https://code.briarproject.org/briar/briar/-/issues/1321Add backpressure to outgoing duplex sync sessions2020-11-18T01:37:42ZakwizgranAdd backpressure to outgoing duplex sync sessionsDuplexOutgoingSession reads records from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable records being queued. This uses an unbounded amount o...DuplexOutgoingSession reads records from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable records being queued. This uses an unbounded amount of memory and increases the risk of records being lost before they're transmitted, leading to unnecessary retransmissions.
Add a backpressure mechanism that limits the amount of queued data and delays DB reads when the queue is full.
This will be a bit more complex than #1319 because DuplexOutgoingSession can start DB queries in response to events.https://code.briarproject.org/briar/briar/-/issues/1320Add backpressure to incoming sync sessions2020-11-18T01:34:09ZakwizgranAdd backpressure to incoming sync sessionsIncomingSession reads records from the transport as quickly as possible and queues them to be added to the DB. If the transport is faster than the DB, this will result in an unbounded number of records being queued. This uses an unbounde...IncomingSession reads records from the transport as quickly as possible and queues them to be added to the DB. If the transport is faster than the DB, this will result in an unbounded number of records being queued. This uses an unbounded amount of memory, which is a DoS risk.
Add a backpressure mechanism that limits the amount of queued data and delays reading from the connection when the queue is full.https://code.briarproject.org/briar/briar/-/issues/1315Wifi icon is sometimes green when not connected to wifi2020-11-17T18:29:53ZakwizgranWifi icon is sometimes green when not connected to wifi* Android version: 7.1.2
* Phone model: Samsung GT-I9195 (lineage_serranoltexx)
* Briar version: 1.0.8 (a44a68f)
* User feedback: "Sometimes (also while writing this) the Wifi icon is green even when Wifi is turned off."
The log doesn't...* Android version: 7.1.2
* Phone model: Samsung GT-I9195 (lineage_serranoltexx)
* Briar version: 1.0.8 (a44a68f)
* User feedback: "Sometimes (also while writing this) the Wifi icon is green even when Wifi is turned off."
The log doesn't show any sign of connectivity changes, so this may be a UI issue.https://code.briarproject.org/briar/briar/-/issues/1313Tor fails to start if previous Tor instance is still running2023-03-15T12:55:10ZakwizgranTor fails to start if previous Tor instance is still runningI ran into this issue a couple of times while debugging #1293, and now I've seen it in a user feedback log (also affected by #1293, as far as I can tell).
```
05-25 14:25:08.926 I/TorPlugin: May 25 16:25:08.926 [notice] Tor 0.2.9.14 (gi...I ran into this issue a couple of times while debugging #1293, and now I've seen it in a user feedback log (also affected by #1293, as far as I can tell).
```
05-25 14:25:08.926 I/TorPlugin: May 25 16:25:08.926 [notice] Tor 0.2.9.14 (git-73e1a45b461ab669) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2n and Zlib 1.2.8.
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.927 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.927 [notice] Read configuration file "/data/data/org.briarproject.briar.android/app_tor/torrc".
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.935 [notice] Opening Control listener on 127.0.0.1:59051
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.935 [warn] Could not bind to 127.0.0.1:59051: Address already in use. Is Tor already running?
05-25 14:25:08.940 I/TorPlugin: May 25 16:25:08.935 [warn] Failed to parse/validate config: Failed to bind one of the listener ports.
05-25 14:25:08.940 I/TorPlugin: May 25 16:25:08.935 [err] Reading config failed--see warnings above.
05-25 14:25:08.940 W/TorPlugin: Tor exited with value 1
```
The problem occurs because the previous Tor instance is still using the control port. This is unlikely to happen if Tor starts and stops normally, because the shutdown command takes effect very quickly. But if Briar fails to open the control connection (e.g. due to #1293 or similar bugs), Tor won't exit until a short time after Briar exits, during which time Briar may have been relaunched. I think this could also happen if Briar crashes and is immediately relaunched.https://code.briarproject.org/briar/briar/-/issues/1312Include user manual in app2022-11-18T17:32:16ZakwizgranInclude user manual in appA user asked for the manual to be included in the app. This was always the plan but it doesn't look like we had a ticket for it.
Related to #94, #315.A user asked for the manual to be included in the app. This was always the plan but it doesn't look like we had a ticket for it.
Related to #94, #315.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/1311Secure Scuttlebutt plugin2020-11-17T18:26:34ZakwizgranSecure Scuttlebutt pluginA user asked for the ability to use Secure Scuttlebutt as a transport.A user asked for the ability to use Secure Scuttlebutt as a transport.https://code.briarproject.org/briar/briar/-/issues/1310NPE during enter transition2021-11-04T11:03:44ZakwizgranNPE during enter transition* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 1.0.4 (f31219d)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.getAllowReturnTransitionOverlap()' o...* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 1.0.4 (f31219d)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.getAllowReturnTransitionOverlap()' on a null object reference
at android.app.EnterTransitionCoordinator.allowOverlappingTransitions(EnterTransitionCoordinator.java:676)
at android.app.EnterTransitionCoordinator.sendSharedElementDestination(EnterTransitionCoordinator.java:188)
at android.app.EnterTransitionCoordinator.viewsReady(EnterTransitionCoordinator.java:129)
at android.app.EnterTransitionCoordinator$2.onPreDraw(EnterTransitionCoordinator.java:154)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2205)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
Unfortunately there's no clue in the stacktrace about where this crash happens. Might have been fixed by !821 if we're lucky.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1308Configurable colours for text balloons2020-11-18T02:03:46ZakwizgranConfigurable colours for text balloonsA user asked for the ability to change the colours of text balloons.A user asked for the ability to change the colours of text balloons.https://code.briarproject.org/briar/briar/-/issues/1303IllegalArgumentException: parameter must be a descendant of this view2021-11-04T11:04:02ZakwizgranIllegalArgumentException: parameter must be a descendant of this viewTwo crash reports from the same user:
* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version:
* 1.0.4 (f31219d)
* 1.0.5 (183f0c5)
* User feedback:
* "Sending message to contact. (Message contains \" and ' charact...Two crash reports from the same user:
* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version:
* 1.0.4 (f31219d)
* 1.0.5 (183f0c5)
* User feedback:
* "Sending message to contact. (Message contains \" and ' characters.)"
* "Briar in foreground, no user action."
First log:
```
05-18 13:22:51.117 I/EmojiProvider: Loaded page emoji_smiley_people.png
05-18 13:22:55.909 I/KeyboardAwareLinearLayout: onKeyboardOpen(282)
05-18 13:23:47.110 I/ConversationActivity: Storing message took 298 ms
05-18 13:23:49.311 I/ConversationActivity: Messages sent
05-18 13:23:49.598 I/BriarRecyclerView: Updating Content...
05-18 13:23:49.630 I/ConversationActivity: Marking read took 2 ms
05-18 13:23:51.009 I/ConversationActivity: Messages acked
05-18 13:23:52.434 I/BriarRecyclerView: Adding Handler Callback
05-18 13:23:52.435 I/AndroidDatabaseConfig: Database key has been set: true
05-18 13:23:52.634 I/ContactListFragment: Full load took 192 ms
```
Crashed at 13:23:53.397
Second log:
```
05-25 09:06:43.627 I/EmojiProvider: Loading page emoji_smiley_people.png
05-25 09:06:43.836 I/ConversationActivity: Marking read took 207 ms
05-25 09:06:44.282 I/EmojiProvider: Loaded page emoji_smiley_people.png
05-25 09:06:48.501 I/ConversationActivity: Storing message took 366 ms
05-25 09:06:48.710 I/BriarRecyclerView: Adding Handler Callback
05-25 09:06:48.711 I/AndroidDatabaseConfig: Database key has been set: true
```
Crashed at 09:06:49.050
Stacktrace:
```
java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5459)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5388)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:3073)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2683)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2608)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
It looks like both crashes happened after sending and receiving private messages containing emoji, then switching away from the private conversation. In the first crash the switch was to the contact list - in the second crash it's not clear.Android 1.4