briar issueshttps://code.briarproject.org/groups/briar/-/issues2022-04-18T09:39:27Zhttps://code.briarproject.org/briar/briar/-/issues/31Use built-in error correction for modem plugin?2022-04-18T09:39:27ZakwizgranUse built-in error correction for modem plugin?
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) co...
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) could be removed, reducing the size of the codebase and making BTP connections harder to identify: they would simply be SLIP-framed random data. (SLIP-framed UDP packets full of random data would be another easily implemented option, if that would be less likely to stand out.)
AT commands for enabling error correction (on which modems?):
* AT\N2: Require error correction, report NO CARRIER if the other end doesn't support it.
* AT&Q5: Try to negotiate an error corrected link.https://code.briarproject.org/briar/briar/-/issues/2300Show more information about startup failures2022-04-08T12:33:12ZakwizgranShow more information about startup failuresRecently we've had several reports of corrupt databases (StartResult#DB_ERROR). Because these errors prevent the app from starting, we can't use crash reports or user feedback to learn about the cause.
We should expose more information ...Recently we've had several reports of corrupt databases (StartResult#DB_ERROR). Because these errors prevent the app from starting, we can't use crash reports or user feedback to learn about the cause.
We should expose more information about startup failures in the UI. This will involve returning the information from LifecycleManager#startService() and then attaching it to the intent that launches StartupFailureActivity. StartupFailureActivity should allow the user to copy the information so they can send it to us.Android 1.4https://code.briarproject.org/briar/briar-mailbox/-/issues/37Create UI component for multi-step onboarding, or find a suitable library2022-04-04T14:40:56ZakwizgranCreate UI component for multi-step onboarding, or find a suitable libraryMailbox: First runTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/tor-reproducer/-/issues/5Properly handle enviroment variables2022-04-03T10:52:06ZNicoProperly handle enviroment variablesThis script is growing bigger and bigger and while working on !17 I noticed that the environment variables from the Linux build are causing the Windows build to fail, because `os.environ.copy()` doesn't seem to do what it pretends to do....This script is growing bigger and bigger and while working on !17 I noticed that the environment variables from the Linux build are causing the Windows build to fail, because `os.environ.copy()` doesn't seem to do what it pretends to do. I.e., we still modify the original environment variables after the copy and thus I now manually pop them after each build (15971b47a2c7b7f01abb422b42dd0cc75f7a8045).
Since this is quite ugly, we should do something better in the future.
There are simple helper functions [like this one](https://gist.github.com/igniteflow/7267431#gistcomment-2551951) which would allow us to really only temporary set environment variables, but since this would require larger architectural changes, I didn't do it yet. Especially given that we might use official Tor binaries soon anyway.https://code.briarproject.org/briar/briar/-/issues/2185Update mailbox properties when unpairing mailbox2022-04-01T13:20:20ZakwizgranUpdate mailbox properties when unpairing mailboxWhen we unpair our own mailbox, update the mailbox properties that are synced to our contacts.
Depends on #2181, #2173, #2175.When we unpair our own mailbox, update the mailbox properties that are synced to our contacts.
Depends on #2181, #2173, #2175.Mailbox: Sync mailbox propertiesDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2184Update mailbox properties when adding a contact to the mailbox2022-04-01T13:19:23ZakwizgranUpdate mailbox properties when adding a contact to the mailboxDepends on #2181, #2183.Depends on #2181, #2183.Mailbox: Sync mailbox propertieshttps://code.briarproject.org/briar/briar/-/issues/2180Design sync client for mailbox properties2022-04-01T13:18:12ZakwizgranDesign sync client for mailbox propertiesDesign a BSP client for syncing mailbox properties (onion address, auth token, incoming and outgoing folder IDs) between contacts. Unlike the transport properties client we want to send different properties to each contact, so it probabl...Design a BSP client for syncing mailbox properties (onion address, auth token, incoming and outgoing folder IDs) between contacts. Unlike the transport properties client we want to send different properties to each contact, so it probably makes sense to use a separate client, but the basic design can be similar (include a version number in each update, delete all but the latest update from each contact).Mailbox: Sync mailbox propertiesDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2267Broadcast event when recording connection status of own mailbox2022-04-01T11:18:01ZakwizgranBroadcast event when recording connection status of own mailboxMailbox: Status UI for Briar appDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2295Let MailboxPropertyManager broadcast event when contact's mailbox props are u...2022-03-31T09:24:23ZDaniel LublinLet MailboxPropertyManager broadcast event when contact's mailbox props are updatedOn incoming mailbox properties update, MailboxPropertyManagerImpl#incomingMessage should broadcast an event that a contact's mailbox props were updated.
It is the Mailbox client manager that will consume this event: https://code.briarpr...On incoming mailbox properties update, MailboxPropertyManagerImpl#incomingMessage should broadcast an event that a contact's mailbox props were updated.
It is the Mailbox client manager that will consume this event: https://code.briarproject.org/briar/briar/-/issues/2228MailboxDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2181Implement sync client for mailbox properties2022-03-30T12:50:15ZakwizgranImplement sync client for mailbox propertiesDepends on #2180.Depends on #2180.Mailbox: Sync mailbox propertiesDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2265Replace ETA with max latency in retransmission logic2022-03-29T13:12:39ZakwizgranReplace ETA with max latency in retransmission logicThe sync protocol allows a message to be retransmitted if either the message's send time (also called expiry time in the database code) has been reached, or if the message's ETA via the currently available transport would be earlier than...The sync protocol allows a message to be retransmitted if either the message's send time (also called expiry time in the database code) has been reached, or if the message's ETA via the currently available transport would be earlier than the ETA of the previous copy. The ETA is based on the max latency of the transport.
This second (ETA) condition is met when the previous copy was sent via a higher-latency transport and a lower-latency transport is now available. But this logic has a weird edge case: immediately after sending a message via a higher-latency transport, the message can be sent via a lower-latency transport, as intended. But as the ETA of the first copy approaches, the message stops being sendable via the lower-latency transport.
This edge case is unlikely to matter when the lower latency is a tiny fraction of the higher latency (eg 30 seconds for Tor vs 28 days for removable drives). But it may become important when the lower latency is a significant fraction of the higher latency (eg 14 days for mailboxes vs 28 days for removable drives).
To remove the edge case we should store the max latency of the transport rather than the ETA, and allow the message to be retransmitted if either the send time has been reached (as now), or if the max latency of the currently available transport is less than the max latency of the transport used for the previous copy. This will require a DB migration.MailboxDaniel LublinDaniel Lublinhttps://code.briarproject.org/briar/briar/-/issues/2010Investigate behaviour of recent apps list for various manufacturers2022-03-21T13:49:28ZakwizgranInvestigate behaviour of recent apps list for various manufacturersMany manufacturers have custom implementations of the recent apps list.
On Tecno phones, clearing the recent apps list [kills the Briar process](https://code.briarproject.org/briar/briar/-/issues/992#note_44605) unless the app is [locke...Many manufacturers have custom implementations of the recent apps list.
On Tecno phones, clearing the recent apps list [kills the Briar process](https://code.briarproject.org/briar/briar/-/issues/992#note_44605) unless the app is [locked to the recent apps list](https://code.briarproject.org/briar/briar/-/issues/1743#note_49393).
On Xiaomi/Redmi phones, [locking an app to the recent apps list](https://code.briarproject.org/briar/briar/-/issues/1743#note_49341) prevents it from being killed by the system's power manager, which would otherwise happen even without clearing the list.
For as many manufacturers as possible, find out:
1. whether clearing the recent apps list kills Briar
2. whether apps can be locked to the recent apps list
3. whether locking prevents Briar from being killed when clearing the list
4. whether locking provides any other protection (e.g. from the system's power manager)https://code.briarproject.org/briar/briar/-/issues/2288Check whether Tor complains about absence of ec_nistp_64_gcc_128 optimisation...2022-03-18T14:56:41ZakwizgranCheck whether Tor complains about absence of ec_nistp_64_gcc_128 optimisation on Android x86_64On Windows and Linux x64_64, Tor complains if the `ec_nistp_64_gcc_128` optimisation wasn't enabled at compile time. Check whether this also needs to be enabled on Android x86_64.On Windows and Linux x64_64, Tor complains if the `ec_nistp_64_gcc_128` optimisation wasn't enabled at compile time. Check whether this also needs to be enabled on Android x86_64.https://code.briarproject.org/briar/tor-reproducer/-/issues/12Investigate whether we can use --enable-static-tor2022-03-10T14:24:04ZakwizgranInvestigate whether we can use --enable-static-torWhen configuring the Tor build, the `--enable-static-tor` flag sets two flags we're not currently using on all platforms: `--enable-static-zlib` and `-static`.
We had some issues with `--enable-static-zlib` on Android, and `-static` may...When configuring the Tor build, the `--enable-static-tor` flag sets two flags we're not currently using on all platforms: `--enable-static-zlib` and `-static`.
We had some issues with `--enable-static-zlib` on Android, and `-static` may cause portability issues with glibc and NSS on Linux. Find out more about these issues and decide whether we should use `--enable-static-tor` on each platform.https://code.briarproject.org/briar/tor-reproducer/-/issues/10Share more code between platforms2022-03-10T14:07:20ZakwizgranShare more code between platformsRefactor the code to share more code between platforms, perhaps through inheritance. Depends on #9.Refactor the code to share more code between platforms, perhaps through inheritance. Depends on #9.https://code.briarproject.org/briar/tor-reproducer/-/issues/9Extract code from Android Makefile2022-03-10T14:07:20ZakwizgranExtract code from Android MakefileConvert some of the code in the Android Makefile to Python so we more easily compare the Android, Linux and Windows builds and share code between them.Convert some of the code in the Android Makefile to Python so we more easily compare the Android, Linux and Windows builds and share code between them.https://code.briarproject.org/briar/briar/-/issues/2282iOS feasibility study2022-03-03T17:03:06ZakwizgraniOS feasibility studyTo know whether Briar can be viable on iOS we need to answer the following questions.
Online:
* Can the app run a Tor hidden service on iOS? (Bearing in mind that this requires a wake lock on Android to prevent Tor's circuits from timin...To know whether Briar can be viable on iOS we need to answer the following questions.
Online:
* Can the app run a Tor hidden service on iOS? (Bearing in mind that this requires a wake lock on Android to prevent Tor's circuits from timing out when the CPU sleeps.)
* Can the hidden service keep running for a limited time when the app goes into the background?
* Can the app wake periodically while running in the background, connect to a mailbox via Tor and check for messages?
* If the app finds messages when checking the mailbox, can it (a) store the messages in the local database, (b) show a notification?
Offline:
* Can the app advertise a UUID/other info via BLE such that nearby iOS/Android devices can discover it?
* Can the app scan for UUIDs/other info advertised via BLE by nearby iOS/Android devices?
* Can the app make/receive GATT connections to/from iOS/Android devices?
* Can the app make/receive L2CAP-CoC connections to/from iOS/Android devices?
* Can the app provide a wifi hotspot (without internet access)? Can it make/receive TCP connections to/from devices connected to the hotspot?
* Can the app connect to a wifi hotspot (without internet access) provided by another device? Can it make/receive TCP connections to/from other devices connected to the hotspot?
For all of the above we need to know:
* Differences between foreground and background behaviour
* API limits such as rate limits, number of UUIDs that can be scanned for
* Any other circumstances that could affect the behaviour, such as screen being off, low battery, device reboot, user not bringing the app to the foreground for a long time
* Whether user interaction is neededhttps://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/2153Upgrade Tor to 0.3.5.172022-02-25T14:59:07ZakwizgranUpgrade Tor to 0.3.5.17Tor 0.3.5.16 contains a fix for a remotely triggerable denial-of-service vulnerability.
https://gitweb.torproject.org/tor.git/plain/ChangeLogTor 0.3.5.16 contains a fix for a remotely triggerable denial-of-service vulnerability.
https://gitweb.torproject.org/tor.git/plain/ChangeLogAndroid 1.4Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2242Migrate OkHttp to bramble-core2022-02-25T14:59:07ZakwizgranMigrate OkHttp to bramble-coreMailboxTorsten GroteTorsten Grote2022-01-03