briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-09-04T12:08:04Zhttps://code.briarproject.org/briar/briar/-/issues/1716Need to tap "Use Password" twice in unlock screen2020-09-04T12:08:04ZakwizgranNeed to tap "Use Password" twice in unlock screenAndroid version: 9
User feedback:
> When the app is locked on device with registered biometrics, it shows two fingerprint dialogs when clicking "Use Password", instead of transitioning to Password dialog. First it opens BiometricPrompt,...Android version: 9
User feedback:
> When the app is locked on device with registered biometrics, it shows two fingerprint dialogs when clicking "Use Password", instead of transitioning to Password dialog. First it opens BiometricPrompt, then KeyguardManager which again shows the fingerprint dialog. The end result is that user need to tap twice on "Use Password" to use the password option. If BiometricPrompt is removed/disabled from UnlockActivity there are no issues. Further, if device does not have password but PIN instead, it shows on first dialog "Use Password" then "Use PIN" which is correct.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1755Test whether panic button response still works on Android 102020-09-04T11:35:02ZakwizgranTest whether panic button response still works on Android 10Android 10 places new restrictions on background apps starting activities:
https://developer.android.com/guide/components/activities/background-starts
Test whether this affects the panic button response, which uses two invisible activi...Android 10 places new restrictions on background apps starting activities:
https://developer.android.com/guide/components/activities/background-starts
Test whether this affects the panic button response, which uses two invisible activities (PanicResponderActivity and ExitActivity), under the following circumstances:
* Briar isn't running
* Briar is running and visible in recent apps
* Briar is running but not visible in recent appsakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1754Test whether hiding UI still works on Android 102020-09-04T10:56:53ZakwizgranTest whether hiding UI still works on Android 10Android 10 places new restrictions on background apps starting activities:
https://developer.android.com/guide/components/activities/background-starts
Check whether BriarService#hideUi(), which is called on low memory and when the devi...Android 10 places new restrictions on background apps starting activities:
https://developer.android.com/guide/components/activities/background-starts
Check whether BriarService#hideUi(), which is called on low memory and when the device shuts down, works under the following circumstances:
* Briar is visible in recent apps
* Briar has been cleared from recent apps but is still running
It's not a big deal if hideUi() stops working, as long as we don't get a crash or unexpected behaviour when calling it or when relaunching the app.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1718Tor doesn't start with targetSdkVersion set to 292020-09-04T10:18:06ZakwizgranTor doesn't start with targetSdkVersion set to 29As expected, Android's restrictions on launching processes are getting tighter. Setting the targetSdkVersion to 29 prevents Tor from starting on the API 29 emulator:
```
2020-03-30 17:46:55.672 7943-8057/org.briarproject.briar.android.d...As expected, Android's restrictions on launching processes are getting tighter. Setting the targetSdkVersion to 29 prevents Tor from starting on the API 29 emulator:
```
2020-03-30 17:46:55.672 7943-8057/org.briarproject.briar.android.debug I/TorPlugin: Starting Tor
2020-03-30 17:46:55.680 7943-8057/org.briarproject.briar.android.debug W/PluginManagerImpl: org.briarproject.bramble.api.plugin.PluginException: java.io.IOException: Cannot run program "/data/user/0/org.briarproject.briar.android.debug/app_tor/tor" (in directory "/data/user/0/org.briarproject.briar.android.debug/app_tor"): error=13, Permission denied
org.briarproject.bramble.api.plugin.PluginException: java.io.IOException: Cannot run program "/data/user/0/org.briarproject.briar.android.debug/app_tor/tor" (in directory "/data/user/0/org.briarproject.briar.android.debug/app_tor"): error=13, Permission denied
at org.briarproject.bramble.plugin.tor.TorPlugin.start(TorPlugin.java:221)
at org.briarproject.bramble.plugin.PluginManagerImpl$PluginStarter.run(PluginManagerImpl.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.io.IOException: Cannot run program "/data/user/0/org.briarproject.briar.android.debug/app_tor/tor" (in directory "/data/user/0/org.briarproject.briar.android.debug/app_tor"): error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
at org.briarproject.bramble.plugin.tor.TorPlugin.start(TorPlugin.java:219)
at org.briarproject.bramble.plugin.PluginManagerImpl$PluginStarter.run(PluginManagerImpl.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
at java.lang.ProcessImpl.start(ProcessImpl.java:141)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at org.briarproject.bramble.plugin.tor.TorPlugin.start(TorPlugin.java:219)
at org.briarproject.bramble.plugin.PluginManagerImpl$PluginStarter.run(PluginManagerImpl.java:220)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
```
Tor starts OK with the current targetSdkVersion of 28. Same results on the API 30 emulator.https://code.briarproject.org/briar/briar/-/issues/1762allow connection through Wan avoiding TOR2020-08-28T14:34:06ZVladislavallow connection through Wan avoiding TORAllow connection through Wan avoiding TOR for thouse who need just to send quick message, and at this moment don't care about privacy.Allow connection through Wan avoiding TOR for thouse who need just to send quick message, and at this moment don't care about privacy.https://code.briarproject.org/briar/briar/-/issues/1759AndroidTaskScheduler doesn't correctly handle cancellation of periodic tasks2020-08-14T13:04:06ZakwizgranAndroidTaskScheduler doesn't correctly handle cancellation of periodic tasksAndroidTaskScheduler#scheduleWithFixedRate() returns a Future that can be used to cancel the task. But if the Future is cancelled after the first execution of the task, subsequent executions aren't cancelled.AndroidTaskScheduler#scheduleWithFixedRate() returns a Future that can be used to cancel the task. But if the Future is cancelled after the first execution of the task, subsequent executions aren't cancelled.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1744NPE when storing local socket address2020-08-14T11:44:13ZakwizgranNPE when storing local socket addressI saw this crash on the Samsung Galaxy Ace 2 (Android 4.1.2) while testing a branch. The relevant code is the same on master.
It's not clear from the stacktrace which of the following methods returned null:
* ServerSocket#getLocalSocke...I saw this crash on the Samsung Galaxy Ace 2 (Android 4.1.2) while testing a branch. The relevant code is the same on master.
It's not clear from the stacktrace which of the following methods returned null:
* ServerSocket#getLocalSocketAddress() (docs say is shouldn't return null since the socket is bound, but maybe a race condition?)
* InetSocketAddress#getAddress() (docs say it returns null for an unresolved address - but resolution shouldn't be needed here)
```
07-03 12:02:39.758 6661-6661/org.briarproject.briar.android.debug I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
07-03 12:03:55.329 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Online: true, wifi: true
07-03 12:03:55.329 6661-6734/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Queue time 3 ms
07-03 12:03:55.339 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Country code: GB
07-03 12:03:55.339 6661-6734/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Connected to wifi
07-03 12:03:55.349 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Charging: true
07-03 12:03:55.359 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Enabling network
07-03 12:03:55.359 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Not using bridges
07-03 12:03:55.359 6661-6711/org.briarproject.briar.android.debug I/TorPlugin: Enabling connection padding
07-03 12:03:55.369 6661-7222/org.briarproject.briar.android.debug I/PluginManagerImpl: org.briarproject.bramble.lan changed from state INACTIVE to ACTIVE
07-03 12:03:55.369 6661-6661/org.briarproject.briar.android.debug I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.lan is ACTIVE
07-03 12:03:55.479 6661-6758/org.briarproject.briar.android.debug I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
07-03 12:03:55.489 6661-6734/org.briarproject.briar.android.debug I/PollerImpl: Polling plugin org.briarproject.bramble.lan
07-03 12:03:55.639 6661-6758/org.briarproject.briar.android.debug I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
07-03 12:03:55.639 6661-6711/org.briarproject.briar.android.debug I/RenewableWakeLock: Acquiring wake lock org.briarproject.briar.android.debug
07-03 12:03:55.749 6661-6734/org.briarproject.briar.android.debug I/ConnectionRegistryImpl: 0 contacts connected or better: org.briarproject.bramble.lan
07-03 12:03:55.789 6661-7222/org.briarproject.briar.android.debug I/PluginManagerImpl: Merging settings took 40 ms
07-03 12:03:55.789 6661-7222/org.briarproject.briar.android.debug I/TcpPlugin: Listening on 192.168.1.77
07-03 12:03:55.839 6661-7222/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind fe[scrubbed]88
07-03 12:03:55.839 6661-7222/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind fe[scrubbed]88
07-03 12:03:55.839 6661-7222/org.briarproject.briar.android.debug W/dalvikvm: threadid=13: thread exiting with uncaught exception (group=0x4146b2a0)
07-03 12:03:55.859 6661-7222/org.briarproject.briar.android.debug E/ACRA: ACRA caught a NullPointerException for org.briarproject.briar.android.debug
java.lang.NullPointerException
at org.briarproject.bramble.plugin.tcp.LanTcpPlugin.setLocalIpv6SocketAddress(LanTcpPlugin.java:197)
at org.briarproject.bramble.plugin.tcp.LanTcpPlugin.setLocalSocketAddress(LanTcpPlugin.java:188)
at org.briarproject.bramble.plugin.tcp.TcpPlugin.bind(TcpPlugin.java:177)
at org.briarproject.bramble.plugin.tcp.TcpPlugin.lambda$bind$0$TcpPlugin(TcpPlugin.java:148)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$TcpPlugin$uW6V8780O_W211y3Jq96bZYsB4U.run(lambda)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(PoliteExecutor.java:57)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$Lhtp6tpdaSoSplu828CNOD0u06w.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
```Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1721Request ACCESS_FINE_LOCATION for Bluetooth discovery2020-08-14T11:44:00ZakwizgranRequest ACCESS_FINE_LOCATION for Bluetooth discoveryBefore raising our target API version to 29 we'll need to request ACCESS_FINE_LOCATION rather than ACCESS_COARSE_LOCATION for Bluetooth discovery.
https://developer.android.com/guide/topics/connectivity/bluetooth#Permissions
Related to...Before raising our target API version to 29 we'll need to request ACCESS_FINE_LOCATION rather than ACCESS_COARSE_LOCATION for Bluetooth discovery.
https://developer.android.com/guide/topics/connectivity/bluetooth#Permissions
Related to #1546.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1758Periodic timeout monitor task is not cancelled2020-08-14T11:43:47ZakwizgranPeriodic timeout monitor task is not cancelledThe periodic timeout monitor task is meant to be cancelled when the last TimeoutInputStream is closed, but this doesn't happen unless every stream's close() method is called. Transport connections are often closed without calling close()...The periodic timeout monitor task is meant to be cancelled when the last TimeoutInputStream is closed, but this doesn't happen unless every stream's close() method is called. Transport connections are often closed without calling close() on the input stream, leaving the periodic task running unnecessarily and leaking a reference to the closed stream.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1745LAN plugin fails to bind IPv4 server socket when wifi is enabled2020-08-14T11:43:33ZakwizgranLAN plugin fails to bind IPv4 server socket when wifi is enabledOn the Nexus 5X (Android 8.1), the LAN plugin fails to bind an IPv4 server socket when the device's wifi is disabled and then re-enabled.
The AndroidNetworkManager broadcasts two connectivity events when wifi is re-enabled. The first se...On the Nexus 5X (Android 8.1), the LAN plugin fails to bind an IPv4 server socket when the device's wifi is disabled and then re-enabled.
The AndroidNetworkManager broadcasts two connectivity events when wifi is re-enabled. The first seems to be broadcast before the device has received a DHCP address, the second after the address is received. The plugin responds to the first event by trying to bind IPv4 and IPv6 sockets. It fails to bind an IPv4 socket because the wifi interface doesn't have an IPv4 address yet. The plugin doesn't try to bind again in response to the second event because it's already in the ACTIVE state due to having bound an IPv6 socket.
The bug doesn't happen on the Pixel 2 (Android 11 beta). Only one connectivity event is broadcast when wifi is re-enabled, and this seems to happen after the interface has an IPv4 address.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1435[android] Migrate to HtmlCompat2020-08-14T11:32:43ZTorsten Grote[android] Migrate to HtmlCompat`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.html`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.htmlAndroid 1.2https://code.briarproject.org/briar/briar/-/issues/1142Use alarms to schedule essential tasks2020-08-14T09:48:13ZakwizgranUse alarms to schedule essential tasksWe use a ScheduledExecutorService to schedule essential tasks such as key rotation and polling for connections. When Tor is disabled or doesn't have internet connectivity, the Tor plugin's wake lock is released and the device may sleep o...We use a ScheduledExecutorService to schedule essential tasks such as key rotation and polling for connections. When Tor is disabled or doesn't have internet connectivity, the Tor plugin's wake lock is released and the device may sleep or doze. To ensure that essential tasks run during sleep or doze, we should schedule them using alarms.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1723User testing for transport toggles2020-08-14T09:23:31ZakwizgranUser testing for transport togglesRenata GegajRenata Gegajhttps://code.briarproject.org/briar/briar/-/issues/1151In the Navigation window print the word "Tor" (or "Tor connection established...2020-08-12T16:25:37ZWikinautIn the Navigation window print the word "Tor" (or "Tor connection established") below the word "Internet"I propose to have "Tor" indicated when a Tor connection is established. This would make it clear for the user what is this (Internet? Tor!) compared to the other non-Tor-connections.I propose to have "Tor" indicated when a Tor connection is established. This would make it clear for the user what is this (Internet? Tor!) compared to the other non-Tor-connections.Android 1.2https://code.briarproject.org/briar/briar/-/issues/1105Support IPv6 for TCP plugins2020-07-30T10:16:05ZakwizgranSupport IPv6 for TCP pluginsThe TCP plugins are currently restricted to IPv4 addresses. This was done back in the days when we only supported a single IP:port, to ensure we didn't share an IPv6 address with an IPv4-only contact. Now that we share multiple IP:ports,...The TCP plugins are currently restricted to IPv4 addresses. This was done back in the days when we only supported a single IP:port, to ensure we didn't share an IPv6 address with an IPv4-only contact. Now that we share multiple IP:ports, we can include IPv6 addresses.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1284Provide a way to show the user that the connection is secure2020-07-14T13:28:36ZwugacohaProvide a way to show the user that the connection is secureAt the moment I can only see a green wfi icon which indicates that I am connected via wifi. In the settings connect via tor is on "When using wifi and mobile data", however the user has no way to see whether this is correct or not. It is...At the moment I can only see a green wfi icon which indicates that I am connected via wifi. In the settings connect via tor is on "When using wifi and mobile data", however the user has no way to see whether this is correct or not. It is possible just assuming that it is working, which is something that should be clear. If you look at ricochet messenger you can see what's going on with tor (connection,tor version etc.) this would be a great improvement I think.Android 1.2https://code.briarproject.org/briar/briar/-/issues/1624Investigate whether IPv6 link-local addresses work over consumer wifi networks2020-06-30T15:22:04ZakwizgranInvestigate whether IPv6 link-local addresses work over consumer wifi networks[Meshenger](https://github.com/meshenger-app/meshenger-android/blob/master/docs/Documentation.md) uses IPv6 link-local addresses to communicate with peers on the same LAN. A device's link-local address is derived from its MAC address, so...[Meshenger](https://github.com/meshenger-app/meshenger-android/blob/master/docs/Documentation.md) uses IPv6 link-local addresses to communicate with peers on the same LAN. A device's link-local address is derived from its MAC address, so it's the same on every LAN.
If this works reliably on consumer wifi networks it would have a major advantage over our current approach: contacts that connect to a new network would be able to connect to each other immediately without first exchanging updated transport properties via some other transport.
If it works when one of the devices is providing a wifi hotspot, it might also provide an alternative to #1328.
Related to #28, #1193, #1328.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/581Create better methods for querying plugin states2020-06-30T15:21:54ZakwizgranCreate better methods for querying plugin statesTransport plugins can be in the following states:
* No plugin created
* Starting
* Failed to start
* Started but disabled by settings
* Started and enabled, but unable to connect
* Started, enabled, and able to connect
* Stoppin...Transport plugins can be in the following states:
* No plugin created
* Starting
* Failed to start
* Started but disabled by settings
* Started and enabled, but unable to connect
* Started, enabled, and able to connect
* Stopping
* Stopped
The Plugin#isRunning() method returns true if the plugin is started, enabled, and able to connect, and false for all other states. It would be useful for the UI and core to be able to get more information about plugin states.
See discussion on #185.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1572Transport icons use inconsistent information to determine plugin state2020-06-30T15:21:35ZakwizgranTransport icons use inconsistent information to determine plugin stateThe transport icons in the nav drawer use two sources of information to determine which transports are active: `Plugin#isRunning()` and TransportEnabled/DisabledEvents. But these sources can be inconsistent. For example, `BluetoothPlugin...The transport icons in the nav drawer use two sources of information to determine which transports are active: `Plugin#isRunning()` and TransportEnabled/DisabledEvents. But these sources can be inconsistent. For example, `BluetoothPlugin#isRunning()` returns true if the adapter is enabled, regardless of whether contact connections are enabled, but the plugin doesn't broadcast TransportEnabledEvents unless contact connections are enabled. This leads to the following bug:
* Start Briar with default settings and the Bluetooth adapter enabled
* The Bluetooth icon is active because isRunning() returns true
* Disable the Bluetooth adapter
* The Bluetooth icon is inactive because a TransportDisabledEvent was broadcast
* Re-enable the Bluetooth adapter
* The Bluetooth icon remains inactive because no TransportEnabledEvent was broadcast
Arguably the real issue here is that plugins (or the manager) should provide an isEnabled() method that follows the enabled/disabled events. This could easily be implemented in the manager, and could also be used to suppress redundant enabled/disabled events, such as those broadcast when toggling the Bluetooth adapter state without contact connections enabled.
Related to discussion of plugin states on #185.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1328When providing a wifi hotspot, choose port deterministically or in advance2020-06-26T16:19:58ZakwizgranWhen providing a wifi hotspot, choose port deterministically or in advanceAll the Android devices we've tested use the same IP address when providing a wifi hotspot (192.168.43.1). The port number we use when listening on this address should be chosen deterministically or in advance so that contacts connecting...All the Android devices we've tested use the same IP address when providing a wifi hotspot (192.168.43.1). The port number we use when listening on this address should be chosen deterministically or in advance so that contacts connecting to the hotspot can connect to our port without having to receive new transport properties via another transport.
Related to #1193.akwizgranakwizgran