briar issueshttps://code.briarproject.org/groups/briar/-/issues2020-06-26T16:19:58Zhttps://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.akwizgranakwizgranhttps://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/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/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/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/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/1723User testing for transport toggles2020-08-14T09:23:31ZakwizgranUser testing for transport togglesRenata GegajRenata Gegajhttps://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/1712Detect Bluetooth connection limit2022-02-25T15:09:28ZakwizgranDetect Bluetooth connection limitDifferent devices can support different numbers of simultaneous Bluetooth connections. Since we don't have a way to determine a priori how many connections a given device can support, we should try to detect the device's limit and stay b...Different devices can support different numbers of simultaneous Bluetooth connections. Since we don't have a way to determine a priori how many connections a given device can support, we should try to detect the device's limit and stay below it.
Related to #1130.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1695Pending contact list doesn't show any state when Tor plugin is disabled2020-02-11T17:28:21ZakwizgranPending contact list doesn't show any state when Tor plugin is disabledWhile testing the plugin-toggles branch, I noticed that the pending contact list doesn't show any state for pending contacts when the Tor plugin is disabled. This might be a superficial problem with the list or a deeper problem with the ...While testing the plugin-toggles branch, I noticed that the pending contact list doesn't show any state for pending contacts when the Tor plugin is disabled. This might be a superficial problem with the list or a deeper problem with the rendezvous poller.
The state appears as soon as the plugin's turned on.Torsten GroteTorsten Grotehttps://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/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/1178LanPlugin: Take subnet mask into account when polling2020-06-26T16:19:58ZTorsten GroteLanPlugin: Take subnet mask into account when pollingOn Android, we can use [`WifiManager#getDhcpInfo()`](https://developer.android.com/reference/android/net/wifi/WifiManager.html#getDhcpInfo()) to retrieve the subnet mask. We only need to attempt connecting to peers within our subnet.
Th...On Android, we can use [`WifiManager#getDhcpInfo()`](https://developer.android.com/reference/android/net/wifi/WifiManager.html#getDhcpInfo()) to retrieve the subnet mask. We only need to attempt connecting to peers within our subnet.
This could be useful for LANs that allocate public addresses.https://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/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/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/185Toggle Transport States2020-09-04T12:27:54ZTorsten GroteToggle Transport StatesIt would be great to be able to enable/disable transports by touching the icons in the dashboard.
For this, we should have three states for plugins:
* disabled
* enabled
* ready
that could be shown as grey, amber and green icons.It would be great to be able to enable/disable transports by touching the icons in the dashboard.
For this, we should have three states for plugins:
* disabled
* enabled
* ready
that could be shown as grey, amber and green icons.