briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-08-14T13:04:06Zhttps://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/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/1753API 30: Access to installed packages is restricted2021-01-12T11:22:23ZakwizgranAPI 30: Access to installed packages is restrictedWhen we target API 30 we'll need to make changes to retain the ability to check whether power management apps are installed:
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
* [x] `AndroidTorPlugin`: `...When we target API 30 we'll need to make changes to retain the ability to check whether power management apps are installed:
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
* [x] `AndroidTorPlugin`: `pm.getPackageInfo(app.getPackageName(), 0)`
* [x] `AndroidWakeLockManagerImpl`: `packageName.startsWith()`
* [x] `PanicPreferencesFragment`: `pm.getApplicationInfo(panicTriggerApp)`
* [x] `PanicPreferencesFragment`: `intent.resolveActivity(pm)`
* [x] `PanicPreferencesFragment`: `PanicResponder.resolveTriggerApps(pm)`
* [x] `ScreenFilterMonitorImpl`: `pm.getInstalledPackages(GET_PERMISSIONS)`
* [x] `ScreenFilterMonitorImpl`: `pm.getPackageInfo(PLAY_SERVICES_PACKAGE, GET_SIGNATURES)`
* [x] `SettingsFragment`: `intent.resolveActivity(pm)`
* [x] `HuaweiView`: `pm.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY)`
* [x] `KeyAgreementActivity`: `Intent(ACTION_REQUEST_DISCOVERABLE).resolveActivity(pm)`
* [x] `LinkDialogFragment`: `pm.queryIntentActivities()`Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1750Text should adapt to system text size setting2021-03-04T14:29:55ZakwizgranText should adapt to system text size settingA user asked for text in Briar to follow the system text size setting.
I'm labelling this as a bug because as far as I can tell it's already the intended behaviour - we're using `sp` rather than `dp` or `px` for all text sizes. But chan...A user asked for text in Briar to follow the system text size setting.
I'm labelling this as a bug because as far as I can tell it's already the intended behaviour - we're using `sp` rather than `dp` or `px` for all text sizes. But changing the system text size doesn't affect Briar, even after signing out and relaunching.
https://developer.android.com/training/multiscreen/screendensities.html#TaskUseDP
> When defining text sizes, however, you should instead use scalable pixels (sp) as your units (but never use sp for layout sizes). The sp unit is the same size as dp, by default, but it resizes based on the user's preferred text size.https://code.briarproject.org/briar/briar/-/issues/1746Expose unread messages count in API's contacts list2022-02-25T15:06:24ZNicoExpose unread messages count in API's contacts listImplementation notes:
* Add variable in `list` function: [ContactControllerImpl/list](https://code.briarproject.org/briar/briar/-/blob/3c63fecb5dad2a3f8174ae40b804679780644a00/briar-headless/src/main/java/org/briarproject/briar/headless/...Implementation notes:
* Add variable in `list` function: [ContactControllerImpl/list](https://code.briarproject.org/briar/briar/-/blob/3c63fecb5dad2a3f8174ae40b804679780644a00/briar-headless/src/main/java/org/briarproject/briar/headless/contact/ContactControllerImpl.kt#L78)
* Get data from [GroupCount](https://code.briarproject.org/briar/briar/-/blob/master/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java#L79)
Needed for https://code.briarproject.org/briar/briar-gtk/-/issues/29.NicoNicohttps://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/1743Research whether our wake lock tags are still effective2021-09-01T10:10:21ZakwizgranResearch whether our wake lock tags are still effectiveLeave Briar running on devices with recent versions of Huawei PowerGenie and Evenwell PowerMonitor to see whether our wake lock tags still protect us from being killed.Leave Briar running on devices with recent versions of Huawei PowerGenie and Evenwell PowerMonitor to see whether our wake lock tags still protect us from being killed.Adapt to changes in the Android platformakwizgranakwizgran2021-04-30https://code.briarproject.org/briar/briar/-/issues/1740"get involved" page is missing mattermost/matrix.2020-09-10T18:33:27Zsyster"get involved" page is missing mattermost/matrix."get involved" page is missing mattermost/matrix.
Reason why I would find it important to add:
sourceforge (that thing the email list is hosted) is something that people who deeply care about privacy and free software might never join..."get involved" page is missing mattermost/matrix.
Reason why I would find it important to add:
sourceforge (that thing the email list is hosted) is something that people who deeply care about privacy and free software might never join in (some will, others not.)
possible solution:
add link to mattermost/matrixhttps://code.briarproject.org/briar/briar/-/issues/1739Create Debian Source Package for Briar Headless2020-10-31T12:52:40ZNicoCreate Debian Source Package for Briar HeadlessTo get Briar GTK into Debian (or to at least provide a .deb installation method), we need to create a Debian package for Briar Headless that builds everything from source. !1252 brought at least a binary package.
Related issues:
* https...To get Briar GTK into Debian (or to at least provide a .deb installation method), we need to create a Debian package for Briar Headless that builds everything from source. !1252 brought at least a binary package.
Related issues:
* https://code.briarproject.org/briar/briar-gtk/-/issues/39
* https://code.briarproject.org/briar/python-briar-wrapper/-/issues/14https://code.briarproject.org/briar/briar/-/issues/1729Android OS can capture keys?2022-02-25T15:07:10ZJay BeeAndroid OS can capture keys?It is my understanding that every keystroke goes to OS over API and then it goes to Briar app from OS over another API. So google can capture anything what is written by separate keyboard application. For security reasons, would it be be...It is my understanding that every keystroke goes to OS over API and then it goes to Briar app from OS over another API. So google can capture anything what is written by separate keyboard application. For security reasons, would it be better to include own keyboard in the application? There are few opensource keyboards, AnySoftKey, Hacker keyboard...https://code.briarproject.org/briar/briar/-/issues/1728Can Android user of Briar communicate with owner of iOS device?2022-02-25T15:07:28ZJay BeeCan Android user of Briar communicate with owner of iOS device?I have not found any Briar version for iPhone, but maybe the protocol allows other client?I have not found any Briar version for iPhone, but maybe the protocol allows other client?https://code.briarproject.org/briar/briar/-/issues/1727Is orbot required?2022-02-25T15:07:42ZJay BeeIs orbot required?Hello. You write that messages over internet are exchanged over tor. Is orbot needed for that? Can you clarify please?Hello. You write that messages over internet are exchanged over tor. Is orbot needed for that? Can you clarify please?https://code.briarproject.org/briar/briar/-/issues/1724For more security spongycastle -> bouncycastle2021-08-31T14:04:03ZNeustradamusFor more security spongycastle -> bouncycastleFor more security, can you change old spongycastle (based on old bouncycastle) to bouncycastle?
- https://www.bouncycastle.org/
- https://www.bouncycastle.org/releasenotes.html
- http://www.bouncycastle.org/latest_releases.html
- https:/...For more security, can you change old spongycastle (based on old bouncycastle) to bouncycastle?
- https://www.bouncycastle.org/
- https://www.bouncycastle.org/releasenotes.html
- http://www.bouncycastle.org/latest_releases.html
- https://www.cvedetails.com/vulnerability-list/vendor_id-7637/Bouncycastle.htmlAndroid 1.3akwizgranakwizgranhttps://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/1722Include last private chat activity in list of contacts2020-11-16T11:15:27ZNicoInclude last private chat activity in list of contactsIn order to sort the contact list in Briar GTK chronologically (https://code.briarproject.org/briar/briar-gtk/issues/4), I thought of adding a `lastChatActivity` key to the [list of contacts exposed by Briar Headless](https://code.briarp...In order to sort the contact list in Briar GTK chronologically (https://code.briarproject.org/briar/briar-gtk/issues/4), I thought of adding a `lastChatActivity` key to the [list of contacts exposed by Briar Headless](https://code.briarproject.org/briar/briar/blob/84584d4d3c3028082c99dbbd10184a3ddb208daa/briar-headless/README.md#listing-all-contacts). The value of this key would be the timestamp of the last message in the private chat with that contact.
I deliberately called it `lastChatActivity` to leave `lastActivity` available for other purposed, i.e. the contact's last message or the last time we were connected to them.NicoNicohttps://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/1720ACRA 4.11 crashes during init with targetSdkVersion set to R (30)2021-01-06T12:31:44ZakwizgranACRA 4.11 crashes during init with targetSdkVersion set to R (30)Looks like we'll need to migrate to ACRA 5 before targetting API 30. The crash doesn't happen on the API 30 emulator with targetSdkVersion set to 29, so this isn't urgent.
```
2020-03-31 11:02:33.685 25167-25167/org.briarproject.briar.a...Looks like we'll need to migrate to ACRA 5 before targetting API 30. The crash doesn't happen on the API 30 emulator with targetSdkVersion set to 29, so this isn't urgent.
```
2020-03-31 11:02:33.685 25167-25167/org.briarproject.briar.android.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.briarproject.briar.android.debug, PID: 25167
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/internal/util/Predicate;
at org.acra.util.IOUtils.streamToString(IOUtils.java:84)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:303)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:294)
at org.acra.ACRA.init(ACRA.java:210)
at org.acra.ACRA.init(ACRA.java:173)
at org.acra.ACRA.init(ACRA.java:157)
at org.acra.ACRA.init(ACRA.java:140)
at org.briarproject.briar.android.BriarApplicationImpl.attachBaseContext(BriarApplicationImpl.java:100)
at android.app.Application.attach(Application.java:351)
at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1203)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6521)
at android.app.ActivityThread.access$1300(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1885)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.internal.util.Predicate" on path: DexPathList[[zip file "/data/app/~~g6kWDR95CtejUwuMSRctEg==/org.briarproject.briar.android.debug-C8FXbrMV6GsjIoTVns77-A==/base.apk"],nativeLibraryDirectories=[/data/app/~~g6kWDR95CtejUwuMSRctEg==/org.briarproject.briar.android.debug-C8FXbrMV6GsjIoTVns77-A==/lib/x86, /system/lib, /system_ext/lib, /product/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:202)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.acra.util.IOUtils.streamToString(IOUtils.java:84)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:303)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:294)
at org.acra.ACRA.init(ACRA.java:210)
at org.acra.ACRA.init(ACRA.java:173)
at org.acra.ACRA.init(ACRA.java:157)
at org.acra.ACRA.init(ACRA.java:140)
at org.briarproject.briar.android.BriarApplicationImpl.attachBaseContext(BriarApplicationImpl.java:100)
at android.app.Application.attach(Application.java:351)
at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1203)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6521)
at android.app.ActivityThread.access$1300(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1885)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
```Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30