briar issueshttps://code.briarproject.org/groups/briar/-/issues2022-06-06T14:40:46Zhttps://code.briarproject.org/briar/briar/-/issues/2324Tor stops responding to control port2022-06-06T14:40:46ZakwizgranTor stops responding to control port* Android version: 9
* Phone model: Motorola Moto E6 Play
* Briar version: 1.4.8 (4623d03c937e176f81fcfbc40a909c6932ccafe0)
While smoke testing the 1.4.8 release I was quickly toggling the Tor settings (enabling/disabling Tor, enabling/...* Android version: 9
* Phone model: Motorola Moto E6 Play
* Briar version: 1.4.8 (4623d03c937e176f81fcfbc40a909c6932ccafe0)
While smoke testing the 1.4.8 release I was quickly toggling the Tor settings (enabling/disabling Tor, enabling/disabling bridges, enabling/disabling Tor on battery) when Briar stopped responding to changes in the Tor settings.
After this happened, each time I changed the settings the Tor plugin still logged "Tor settings updated", indicating that the new settings had been written to the DB and detected by the plugin. But the usual log messages that would follow from updateConnectionStatus() didn't appear.
When I signed out, the plugin logged "Stopping Tor" but then the stop() method didn't return. Eventually I had to force-stop the app.
I spent a long time trying to reproduce the bug, but wasn't able to.
At first I suspected the problem might be caused by the PoliteExecutor that runs the lambdas created by updateConnectionStatus(), but that executor isn't used when stopping Tor. The fact that the stop() method didn't return suggests that the problem is either in jtorctl or in Tor itself (I think a bug in jtorctl is more likely).
Log: [moto-e6-tor-settings-updated.txt](/uploads/aaf30977794c5b935de8e1d5a53d955f/moto-e6-tor-settings-updated.txt)
Before the bug happened, the TorPlugin was logging some long queue times for tasks running on the PoliteExecutor, so in some cases the settings were being changed again before the previous changes had been applied to Tor. But this on its own isn't enough to reproduce the bug: adding a sleep to the end of the lambda created by updateConnectionStatus() caused long queue times but didn't trigger the bug.https://code.briarproject.org/briar/briar-mailbox/-/issues/93NetworkOnMainThreadException in MailboxService#onDestroy()2022-06-06T13:52:17ZTorsten GroteNetworkOnMainThreadException in MailboxService#onDestroy()```ruby
W/o.b.m.c.l.LifecycleManagerImpl: [main] Error while stopping service AndroidTorPlugin
android.os.NetworkOnMainThreadException: null
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1668)
...```ruby
W/o.b.m.c.l.LifecycleManagerImpl: [main] Error while stopping service AndroidTorPlugin
android.os.NetworkOnMainThreadException: null
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1668)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116)
at java.net.SocketOutputStream.write(SocketOutputStream.java:161)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
at net.freehaven.tor.control.TorControlConnection.sendAndWaitForResponse(TorControlConnection.java:192)
at net.freehaven.tor.control.TorControlConnection.setConf(TorControlConnection.java:394)
at net.freehaven.tor.control.TorControlConnection.setConf(TorControlConnection.java:348)
at org.briarproject.mailbox.core.tor.TorPlugin.stopService(TorPlugin.java:455)
at org.briarproject.mailbox.core.tor.AndroidTorPlugin.stopService(AndroidTorPlugin.java:115)
at org.briarproject.mailbox.core.lifecycle.LifecycleManagerImpl$stopAllServices$1.invoke(LifecycleManagerImpl.kt:203)
at org.briarproject.mailbox.core.lifecycle.LifecycleManagerImpl$stopAllServices$1.invoke(LifecycleManagerImpl.kt:202)
at org.briarproject.mailbox.core.lifecycle.LifecycleManagerImpl.run(LifecycleManagerImpl.kt:263)
at org.briarproject.mailbox.core.lifecycle.LifecycleManagerImpl.stopAllServices(LifecycleManagerImpl.kt:202)
at org.briarproject.mailbox.core.lifecycle.LifecycleManagerImpl.stopServices(LifecycleManagerImpl.kt:173)
at org.briarproject.mailbox.android.MailboxService.onDestroy(MailboxService.kt:140)
```Mailbox: Manage app lifecycleSebastianSebastianhttps://code.briarproject.org/briar/briar/-/issues/1687Check whether workaround for Tor bug #28027 is still needed2022-06-06T13:28:06ZakwizgranCheck whether workaround for Tor bug #28027 is still neededThe Tor plugin contains a workaround for Tor bug #28027. The fix for that ticket's parent was backported to the 0.3.5 series, so the workaround may not be needed any more. Test whether it's still needed and remove if not.
https://trac.t...The Tor plugin contains a workaround for Tor bug #28027. The fix for that ticket's parent was backported to the 0.3.5 series, so the workaround may not be needed any more. Test whether it's still needed and remove if not.
https://trac.torproject.org/projects/tor/ticket/28027
https://trac.torproject.org/projects/tor/ticket/29875https://code.briarproject.org/briar/briar/-/issues/1684Add setting to override detected country for Tor bridge configuration2022-06-06T13:26:15Zcano wigAdd setting to override detected country for Tor bridge configurationI am using briar 1.2.4 and I noticed in the options that Briar incorrectly selects 'connect via internet (tor automatic based on location'.
I was on holiday on country X and I did not installed Briar there, however when I went home (cou...I am using briar 1.2.4 and I noticed in the options that Briar incorrectly selects 'connect via internet (tor automatic based on location'.
I was on holiday on country X and I did not installed Briar there, however when I went home (country Y) and installed Briar, the option connect via internet (tor) automatic based on location' was wrong as it referred to country X not my current location.
I don't know whether briar got the info from f-droid since I opened it when I was in country X, however I think this can be dangerous as different countries have different degrees of repression, and tor should be set accordingly, therefore I suggest that whenever the app is opened to check if there was a change of location or maybe even let the user mention which country and automatically set the best connection accordingly.https://code.briarproject.org/briar/briar/-/issues/290Reset Tor polling state if guard connection is lost2022-06-06T13:24:28ZakwizgranReset Tor polling state if guard connection is lostIf the Tor plugin loses its guard connection for reasons other than a change in the device's network connectivity (which we already detect), the plugin should reset its polling state, just as it would in response to a network connectivit...If the Tor plugin loses its guard connection for reasons other than a change in the device's network connectivity (which we already detect), the plugin should reset its polling state, just as it would in response to a network connectivity change. Otherwise we could end up in the following situation:
* Hidden service descriptor published
* Stop polling
* Guard connection lost, hidden service unreachable
* Contact's hidden service descriptor published
* Contact stops polling
* Guard connection re-established
* Hidden service descriptor republished
* We never connect to the contact, they never connect to us
We already receive and log OR connection status events - the plugin should be able to use these to detect when our last OR connection closes and call the existing code for handling network connectivity changes.Android 1.4https://code.briarproject.org/briar/briar/-/issues/950Detect when Tor is failing to connect to the network2022-06-06T13:23:38ZakwizgranDetect when Tor is failing to connect to the networkUnder some circumstances (see #845), Tor can't connect to the network but the app doesn't realise there's no internet connectivity.. Repeatedly trying and failing to connect to guard nodes could cause Tor to mark its preferred guards as ...Under some circumstances (see #845), Tor can't connect to the network but the app doesn't realise there's no internet connectivity.. Repeatedly trying and failing to connect to guard nodes could cause Tor to mark its preferred guards as unreachable and choose new guards sooner than necessary, which could harm anonymity. We should consider setting `DisableNetwork 1` after repeated guard connection failures, then waiting for a connectivity event before trying again.https://code.briarproject.org/briar/briar/-/issues/2284Crash in TorControlConnection#handleEvent()2022-06-06T13:14:05ZakwizgranCrash in TorControlConnection#handleEvent()While testing Briar with some extra Tor controller events, I got a crash from TorControlConnection#handleEvent(). The crash was due to the ReplyLine not containing any spaces, causing String#substring(int, int) at TorControlConnection.ja...While testing Briar with some extra Tor controller events, I got a crash from TorControlConnection#handleEvent(). The crash was due to the ReplyLine not containing any spaces, causing String#substring(int, int) at TorControlConnection.java line 218 to throw an exception when -1 was passed as the length of the substring.
So far I haven't been able to reproduce the crash. The extra events I enabled were GUARD, NS, TRANSPORT_LAUNCHED and STATUS_GENERAL. I suspect that the STATUS_GENERAL event [DIR_ALL_UNREACHABLE](https://gitlab.torproject.org/tpo/core/torspec/-/blob/ec77ae643f3e47bea0292d125a51f8786bf33fb9/control-spec.txt#L2866) would reproduce the bug but I haven't persuaded Tor to broadcast it (again).
Once the bug can be reproduced a ticket should be opened against jtorctl.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar-desktop/-/issues/362Profile picture in conversation header isn't updated2022-06-06T10:21:54ZakwizgranProfile picture in conversation header isn't updatedMinor cosmetic bug: the profile picture in the conversation header isn't updated when the contact sets a new profile picture (the one in the contact list is updated, however).
Switching to another conversation and back causes the header...Minor cosmetic bug: the profile picture in the conversation header isn't updated when the contact sets a new profile picture (the one in the contact list is updated, however).
Switching to another conversation and back causes the header to be updated.https://code.briarproject.org/briar/briar/-/issues/2321Deduplicate RSS feeds2022-06-03T18:21:42ZAminda SuomalainenDeduplicate RSS feedsWhen two users add an RSS feed and share it to each other, Briar doesn't detect it to be the same and shows everything twice in Blogs. I think Briar should notice that they are the same and at least hide the duplicate from user.
I am al...When two users add an RSS feed and share it to each other, Briar doesn't detect it to be the same and shows everything twice in Blogs. I think Briar should notice that they are the same and at least hide the duplicate from user.
I am also unclear on whether both devices are able to check the feed for updates or if it only updates when the device originally adding the feed checks it.
Reproducing:
1. Add a feed
2. Share the feed to another device/user
3. Accept the share on another device
4. Also manually add the same feed
5. Possibly share it to the first device
6. After accepting, both users see the same.
I am using `Briar 1.4.7` from F-Droid (I guess as Android reports the source to be "Package installer") on Android 10 Go Edition (Nokia 1 TA-1047). The other device is 1.4.7 from Aurora Store on SailfishOS Android Support that pretends to be Android 10 on Xperia 10 II (but due to not being real Android has random unrelated issues).https://code.briarproject.org/briar/briar/-/issues/2320FormatException when loading mailbox API version metadata2022-06-01T11:39:08ZakwizgranFormatException when loading mailbox API version metadataMailboxIvanaIvanahttps://code.briarproject.org/briar/briar-mailbox/-/issues/125Allow contacts to call status endpoint2022-05-27T12:03:12ZakwizgranAllow contacts to call status endpointTo reduce the cost of connectivity checks, let's make the status endpoint available to contacts and not return any data from it now or in the future.
If we want the owner to be able to access more information about the mailbox's status ...To reduce the cost of connectivity checks, let's make the status endpoint available to contacts and not return any data from it now or in the future.
If we want the owner to be able to access more information about the mailbox's status (eg amount of data waiting to be downloaded) then let's create a new endpoint when the time comes.Mailbox: Manage mailbox connectionsakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2175Implement UI for warning user when own mailbox is unreachable2022-05-26T20:10:36ZakwizgranImplement UI for warning user when own mailbox is unreachableWhen we repeatedly fail to connect to our own mailbox, we need some way of grabbing the user's attention and guiding them to the mailbox status page. This could be a system notification or a warning within the app, for example.
Depends ...When we repeatedly fail to connect to our own mailbox, we need some way of grabbing the user's attention and guiding them to the mailbox status page. This could be a system notification or a warning within the app, for example.
Depends on #2174.Mailbox: UnpairingTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1562Improve handling of external intents2022-05-26T15:49:41ZTorsten GroteImprove handling of external intentsUse `ENTRY_ACTIVITY` from !1087 as a central router for external intents:
> Not signed into Briar. The password screen is shown, then after signing in the remote contact activity is shown, as expected. The contact's link field is empty....Use `ENTRY_ACTIVITY` from !1087 as a central router for external intents:
> Not signed into Briar. The password screen is shown, then after signing in the remote contact activity is shown, as expected. The contact's link field is empty. If I use the up button to navigate away from the remote contact screen or the pending contact list, the task is closed. I'd expect to navigate to the contact list when pressing the up button. If I don't use the up button to navigate away, then later reopen Briar from the foreground notification, a second Briar task is created. I assume the same would happen with private message notifications, etc - the issue being that the notification expects us to have a task that can be reused by clearing the stack down to NavDrawerActivity, but the existing task doesn't have that activity in its stack.
There's also some other issues with AddContactActivity to resolve:
> If an instance of AddContactActivity already exists it's brought to the foreground but the link isn't populated (I'm assuming this is because the new intent is delivered without calling onCreate() again).
>
> If I open the remote contact activity via the speed dial, then put Briar into the background via the home button and relaunch via the ongoing notification, the contact list appears as expected. But when I back out, the remote contact activity and another instance of the contact list are underneath.
>
> Similarly, if I open the remote contact activity with a share intent, then press the home button, relaunch via the ongoing notification, and back out of the contact list, the remote contact activity is underneath (but without the second instance of the contact list).
>
> Finally, if I open the remote contact activity with a share intent, then back out or press the up button, the task is cleared. If I relaunch via recent apps, the remote contact activity is shown again. Backing out or pressing the up button clears the task again, so I can't reach the rest of the app!
Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1396AssertionError due to SetupActivity being created when signing out2022-05-26T15:47:12ZakwizgranAssertionError due to SetupActivity being created when signing out* Android version: 4.3
* Briar version: 1.1.1 (9476782)
* Phone Model: Galaxy Nexus (yakju)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.login.SetupActivity.onCreate(SetupActivity.java:46)
a...* Android version: 4.3
* Briar version: 1.1.1 (9476782)
* Phone Model: Galaxy Nexus (yakju)
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.login.SetupActivity.onCreate(SetupActivity.java:46)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
```
Log snippet:
```
9-17 18:28:50.420 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:29:14.080 I/BriarService: Trim memory: running low
09-17 18:29:15.360 I/BriarService: Trim memory: running low
09-17 18:29:21.323 I/BriarService: Trim memory: running low
09-17 18:29:50.424 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:30:01.283 I/BriarService: Trim memory: running low
09-17 18:30:50.429 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:31:50.433 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:32:45.038 I/Poller: Polling plugin org.briarproject.bramble.tor
09-17 18:32:45.050 I/ConnectionRegistryImpl: 0 contacts connected: org.briarproject.bramble.tor
09-17 18:32:45.051 I/TorPlugin: Connecting to dif[scrubbed]
09-17 18:32:45.663 I/TorPlugin: Could not connect to dif[scrubbed]: java.io.IOException: Connection failed: Host unreachable
09-17 18:32:45.665 I/TorPlugin: NOTICE Closing stream for '[scrubbed].onion': hidden service is unavailable (try again later).
09-17 18:32:50.438 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:33:23.524 I/Poller: Polling plugin org.briarproject.bramble.lan
09-17 18:33:23.537 I/ConnectionRegistryImpl: 0 contacts connected: org.briarproject.bramble.lan
09-17 18:33:23.537 I/TcpPlugin: Connecting to /192.168.0.6
09-17 18:33:25.868 I/TcpPlugin: Could not connect to /192.168.0.6
09-17 18:33:50.443 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:34:50.448 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:35:50.453 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:36:50.458 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:37:50.462 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:38:50.466 I/RenewableWakeLock: Renewing wake lock LocationManagerService
09-17 18:38:54.012 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
09-17 18:38:54.014 I/TorPlugin: Online: true, wifi: true
09-17 18:38:54.014 I/TorPlugin: Country code: GB
09-17 18:38:54.014 I/TorPlugin: Enabling network, not using bridges
09-17 18:38:54.015 I/AndroidLanTcpPlugin: Connected to wifi
09-17 18:38:54.018 I/BriarService: Trim memory: running low
09-17 18:38:54.064 I/RenewableWakeLock: Acquiring wake lock LocationManagerService
09-17 18:38:54.064 I/RenewableWakeLock: Already acquired
09-17 18:38:56.832 I/BriarRecyclerView: Adding Handler Callback
09-17 18:39:00.314 I/BriarRecyclerView: Adding Handler Callback
09-17 18:39:00.899 I/BriarRecyclerView: Removing Handler Callback
09-17 18:39:02.579 I/BriarControllerImpl: Shutting down service
09-17 18:39:02.657 I/BriarService: Destroyed
09-17 18:39:02.659 I/LifecycleManagerImpl: Stopping services
09-17 18:39:02.660 I/PluginManagerImpl: Stopping simplex plugins
09-17 18:39:02.660 I/PluginManagerImpl: Stopping duplex plugins
09-17 18:39:02.660 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.tor
09-17 18:39:02.661 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.bluetooth
09-17 18:39:02.661 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.tor
09-17 18:39:02.661 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.bluetooth
09-17 18:39:02.661 I/TorPlugin: Stopping Tor
09-17 18:39:02.662 I/TorPlugin: java.net.SocketException: Socket closed
09-17 18:39:02.666 I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.lan
09-17 18:39:02.666 I/TcpPlugin: java.net.SocketException: Socket closed
09-17 18:39:02.666 I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.lan
09-17 18:39:02.666 I/PluginManagerImpl: Waiting for all the plugins to stop
09-17 18:39:02.698 I/AndroidAccountManager: No database key in preferences
09-17 18:39:02.700 I/AccountManagerImpl: Found database key in primary file
09-17 18:39:02.707 I/RenewableWakeLock: Releasing wake lock LocationManagerService
09-17 18:39:02.709 I/TorPlugin: NOTICE Closing no-longer-configured Socks listener on 127.0.0.1:59050
09-17 18:39:02.709 I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
09-17 18:39:02.709 I/TorPlugin: NOTICE Closing old Socks listener on 127.0.0.1:59050
09-17 18:39:02.720 I/TorPlugin: OR connection CLOSED $D7D905184504739AA790FFF32DF882CD5D34CF69~bauruine55
```
The crash happened when signing out after leaving Briar running in the foreground for a long time. Shutdown seems to be proceeding normally before the crash. The log shows several trim memory calls, but not at a severe enough level to hide the UI.
May be related to #1189.https://code.briarproject.org/briar/briar/-/issues/1526AssertionError: Already have a database key2022-05-26T15:45:43ZakwizgranAssertionError: Already have a database key* Android version: 5.1.1
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: Smartfren Andromax B16C2H
Log:
```
02-01 21:43:52.743 I/CameraView: Releasing camera
02-01 21:43:52.882 I/CameraView: Surface destroyed
02-01 21:43:53.956 I/BaseAc...* Android version: 5.1.1
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: Smartfren Andromax B16C2H
Log:
```
02-01 21:43:52.743 I/CameraView: Releasing camera
02-01 21:43:52.882 I/CameraView: Surface destroyed
02-01 21:43:53.956 I/BaseActivity: Starting NavDrawerActivity
02-01 21:43:54.138 I/BaseActivity: Stopping ContactExchangeActivity
02-01 21:44:13.750 I/BaseActivity: Starting SettingsActivity
02-01 21:44:16.276 I/BaseActivity: Stopping NavDrawerActivity
02-01 21:45:25.374 I/BaseActivity: Starting NavDrawerActivity
02-01 21:45:25.556 I/BaseActivity: Stopping SettingsActivity
02-01 21:45:26.976 I/BaseActivity: Starting SetupActivity
02-01 21:45:27.134 I/BaseActivity: Stopping NavDrawerActivity
02-01 21:45:42.017 I/SetupControllerImpl: Creating account
```
Stacktrace:
```
java.lang.AssertionError: Already have a database key
at org.briarproject.bramble.account.AccountManagerImpl.createAccount(AccountManagerImpl.java:163)
at org.briarproject.briar.android.login.SetupControllerImpl.lambda$createAccount$0(SetupControllerImpl.java:101)
at org.briarproject.briar.android.login.-$$Lambda$SetupControllerImpl$u65UGqVCiIKOcwdlXIj7schCrSA.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
```
Looks like this could be related to previous bugs where SetupActivity reappears after setup is complete, or somehow appears in a session where setup didn't even take place (#1189, #1327, #1396). The log here shows that the user navigated from ContactExchangeActivity -> NavDrawerActivity -> SettingsActivity -> NavDrawerActivity -> SetupActivity. Unfortunately the log isn't long enough to show whether setup occurred in this session.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1421Contact list is shown when opening app during DB migration2022-05-26T15:44:20ZakwizgranContact list is shown when opening app during DB migrationSteps to reproduce:
* Use the long-migration branch, which adds a fake 60-second DB migration at every startup
* Sign into Briar
* While the fake migration is running, send Briar to the background or turn the screen off
* Relaunch Briar...Steps to reproduce:
* Use the long-migration branch, which adds a fake 60-second DB migration at every startup
* Sign into Briar
* While the fake migration is running, send Briar to the background or turn the screen off
* Relaunch Briar from the status bar or lock screen notification (on some Android versions this requires opening the notification drawer)
* Expected: The migration screen is shown
* Actual: The contact list is shown with a progress wheel. The nav drawer can be opened. Backing out of the contact list or signing out via the nav drawer shows the migration screen againAndroid 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1482IllegalStateException when loading contact2022-05-26T15:42:20ZakwizgranIllegalStateException when loading contactThree users reported this crash.
* Android version: 7.0, 7.0, 6.0.1
* Phone model: Huawei VNS-L31, Motorola Moto G (5) Plus, Xiaomi Redmi 3S (land)
* Briar version: 1.1.5 (8f4c3c4)
Stacktrace:
```
java.lang.IllegalStateException
...Three users reported this crash.
* Android version: 7.0, 7.0, 6.0.1
* Phone model: Huawei VNS-L31, Motorola Moto G (5) Plus, Xiaomi Redmi 3S (land)
* Briar version: 1.1.5 (8f4c3c4)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:99)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:540)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:83)
at org.briarproject.bramble.db.DatabaseComponentImpl.startTransaction(DatabaseComponentImpl.java:143)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:187)
at org.briarproject.bramble.contact.ContactManagerImpl.getContact(ContactManagerImpl.java:89)
at org.briarproject.briar.android.conversation.ConversationViewModel.lambda$loadContact$1(ConversationViewModel.java:76)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationViewModel$84zBaMmuwR5dlD6GPJnSkh4Cf4w.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:776)
```Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1319Add backpressure to simplex outgoing sync sessions2022-05-26T12:52:47ZakwizgranAdd backpressure to simplex outgoing sync sessionsSimplexOutgoingSession reads acks and messages 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 acks and messages being queued. This uses ...SimplexOutgoingSession reads acks and messages 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 acks and messages being queued. This uses an unbounded amount of memory and increases the risk of acks or messages 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.Mailbox: Manage mailbox connectionsakwizgranakwizgran2022-10-31https://code.briarproject.org/briar/briar/-/issues/2170Method for listing folders on own mailbox with available files2022-05-26T10:38:20ZakwizgranMethod for listing folders on own mailbox with available filesDepends on briar-mailbox#3, briar-mailbox#55.Depends on briar-mailbox#3, briar-mailbox#55.Mailbox: Manage mailbox connectionsTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2186Method for listing files in inbox folder on a contact's mailbox2022-05-26T10:37:52ZakwizgranMethod for listing files in inbox folder on a contact's mailboxDepends on briar-mailbox#3, briar-mailbox#51.Depends on briar-mailbox#3, briar-mailbox#51.Mailbox: Manage mailbox connectionsTorsten GroteTorsten Grote