briar issueshttps://code.briarproject.org/groups/briar/-/issues2020-11-18T01:34:09Zhttps://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/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/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/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/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/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/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/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/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/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/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/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/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/1353Create fake data for automated screenshots2020-11-17T16:08:47ZakwizgranCreate fake data for automated screenshotsCreate fake data that can be inserted into the app by an Espresso test when taking screenshots for the manual or app store.Create fake data that can be inserted into the app by an Espresso test when taking screenshots for the manual or app store.https://code.briarproject.org/briar/briar/-/issues/1359ConversationView shows progress wheel over messages on Nexus 5X2020-11-17T16:08:14ZakwizgranConversationView shows progress wheel over messages on Nexus 5XI noticed this on the Nexus 5X (Android 8.1) with current master (25b8932cde226b75bcf92bdeeaa450e030f23cd6) and can reliably reproduce it there, but I can't reproduce it on the Moto G 4G running the same code.
Steps to reproduce:
* Sign...I noticed this on the Nexus 5X (Android 8.1) with current master (25b8932cde226b75bcf92bdeeaa450e030f23cd6) and can reliably reproduce it there, but I can't reproduce it on the Moto G 4G running the same code.
Steps to reproduce:
* Sign into Briar
* Open a private conversation containing some messages
* Turn the screen off and on again, or press the home button and then resume Briar from recent apps
* The progress wheel appears over the top of the messages and doesn't disappear
![device-2018-08-03-174457](/uploads/6336724b37de55a224e83643276936da/device-2018-08-03-174457.png)https://code.briarproject.org/briar/briar/-/issues/1361Long blog post scrolls to top while reading2020-11-17T16:07:38ZakwizgranLong blog post scrolls to top while reading* Android version: 7.1.2
* Briar version: 1.0.11
* User feedback: "When reading RSS posts on the blogs page, often as I'm scrolling down through a long article the screen jumps back up and displays sections of the article I've already re...* Android version: 7.1.2
* Briar version: 1.0.11
* User feedback: "When reading RSS posts on the blogs page, often as I'm scrolling down through a long article the screen jumps back up and displays sections of the article I've already read. Not a critical issue, but it makes it hard to read long articles in the app since it causes me to lose my place every few paragraphs."
Since the article is long enough to scroll through, I'm assuming this refers to the single post ("read more") view.https://code.briarproject.org/briar/briar/-/issues/1362LAN plugin fails to bind socket on Chrome OS2022-10-10T10:46:20ZakwizgranLAN plugin fails to bind socket on Chrome OS```
08-10 13:58:10.945 2013-2045/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Connected to wifi
08-10 13:58:10.969 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind /192.168.0.4
08-10 13:58:10.970 ...```
08-10 13:58:10.945 2013-2045/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Connected to wifi
08-10 13:58:10.969 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind /192.168.0.4
08-10 13:58:10.970 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Could not bind server socket
```
Android's WifiManager reports the device as connected to wifi with IP address 192.168.0.4, but the LAN plugin can't bind a socket to that address.
Probably due to container restrictions: https://developer.android.com/topic/arc/#check_for_networking_requirementshttps://code.briarproject.org/briar/briar/-/issues/1363IllegalArgumentException: Scrapped or attached views may not be recycled2021-11-04T11:03:42ZakwizgranIllegalArgumentException: Scrapped or attached views may not be recycled* Android version: 8.1.0
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.0.13 (55d8f85)
Stacktrace:
```
java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true android...* Android version: 8.1.0
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.0.13 (55d8f85)
Stacktrace:
```
java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true android.support.v7.widget.RecyclerView{bb19834 VFED.V... ........ 0,0-1080,1599 #7f09012b app:id/recyclerView}, adapter:org.briarproject.briar.android.contact.ConversationAdapter@40dedd1, layout:android.support.v7.widget.LinearLayoutManager@90a2036, context:org.briarproject.briar.android.contact.ConversationActivity@b8d5bc6
at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:6053)
at android.support.v7.widget.RecyclerView$Recycler.recycleView(RecyclerView.java:5997)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:292)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365)
at android.support.v7.widget.GapWorker.run(GapWorker.java:396)
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:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
```
Log:
```
08-08 21:39:57.411 I/ConnectionRegistryImpl: Outgoing connection registered: org.briarproject.bramble.tor
08-08 21:39:57.412 I/ConnectionRegistryImpl: Contact connected
08-08 21:39:57.412 I/ConversationActivity: Contact connected
08-08 21:39:57.615 I/Poller: Polling plugin org.briarproject.bramble.tor
08-08 21:39:57.621 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
08-08 21:39:57.621 I/TorPlugin: Connecting to ojd[scrubbed]
08-08 21:40:03.376 I/BriarRecyclerView: Adding Handler Callback
08-08 21:40:03.376 I/AndroidDatabaseConfig: Database key has been set: true
```
The last two log lines suggest an activity had just started. The previous log lines show that ConversationActivity was recently active, and that's reported as the context of the crash in the stacktrace. So the crash may have occurred while navigating away from ConversationActivity.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1364EOFException when adding contact2020-11-17T15:59:15ZakwizgranEOFException when adding contactSteps to reproduce:
* Device A scans device B, connects via LAN (Bluetooth would also work AFAICT)
* Wait for device A to time out
* Device A closes the connection
* Device B scans device A
* Device B tries to read from the closed conne...Steps to reproduce:
* Device A scans device B, connects via LAN (Bluetooth would also work AFAICT)
* Wait for device A to time out
* Device A closes the connection
* Device B scans device A
* Device B tries to read from the closed connection, throws EOFException
* Device B shows "Connection aborted" toast
* Adding contact failshttps://code.briarproject.org/briar/briar/-/issues/1365Camera error and connection aborted when screen turns off while adding contact2020-11-17T16:07:23ZakwizgranCamera error and connection aborted when screen turns off while adding contactSteps to reproduce:
* Ensure that device A's screen timeout is set to the default (30 seconds)
* Connect devices A and B to the same LAN
* Navigate to the QR code screen on both devices
* Wait 10 seconds without touching the screen on d...Steps to reproduce:
* Ensure that device A's screen timeout is set to the default (30 seconds)
* Connect devices A and B to the same LAN
* Navigate to the QR code screen on both devices
* Wait 10 seconds without touching the screen on device A
* Use device A to scan device B's QR code
* Device A should connect and show "Waiting for contact to scan and connect"
* Device A's screen should turn off before the connection times out
* Turn device A's screen back on
* Device A is still showing "Waiting for contact to scan and connect" although the original timeout has passed
* Device A exits the QR code screen with a "Camera error" toast
* Device A shows a "Connection aborted" toast
Possibly related to #1302, #1364.