briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:40Zhttps://code.briarproject.org/briar/briar/-/issues/30Navigation drawer2018-06-12T11:32:40ZakwizgranNavigation drawerAdd a navigation drawer to the action bar, making the buttons from the dashboard available from any activity.
https://developer.android.com/training/implementing-navigation/nav-drawer.html
Add a navigation drawer to the action bar, making the buttons from the dashboard available from any activity.
https://developer.android.com/training/implementing-navigation/nav-drawer.html
Milestone Bhttps://code.briarproject.org/briar/briar/-/issues/115Improve Tor hidden service performance2018-06-12T11:32:38ZakwizgranImprove Tor hidden service performanceBring the Tor hidden service patch up to date and take it through the patch workshop to get it integrated upstream. Measure the performance improvements.Bring the Tor hidden service patch up to date and take it through the patch workshop to get it integrated upstream. Measure the performance improvements.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/116New polling logic2018-06-12T11:32:38ZakwizgranNew polling logicThe Tor plugin should follow Ricochet's approach to polling:
* Whenever internet access becomes available, publish the hidden service descriptor, wait for it to be published (how?), then poll once for contacts
* Don't poll again unti...The Tor plugin should follow Ricochet's approach to polling:
* Whenever internet access becomes available, publish the hidden service descriptor, wait for it to be published (how?), then poll once for contacts
* Don't poll again until the next time internet access becomes available -- contacts are responsible for connecting to us
The LAN and Bluetooth plugins should use randomised exponential backoff, starting from the time the transport becomes available.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/117Add contacts via QR codes2018-06-12T11:32:38ZakwizgranAdd contacts via QR codesMilestone Bhttps://code.briarproject.org/briar/briar/-/issues/118Introduce contacts to each other2018-04-16T16:24:37ZakwizgranIntroduce contacts to each otherThe protocol for doing this will be a BSP client.The protocol for doing this will be a BSP client.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/119User testing sessions2018-06-12T11:32:38ZakwizgranUser testing sessionsTwo user testing sessions for Milestone B -- findings to be documented in the issue tracker.Two user testing sessions for Milestone B -- findings to be documented in the issue tracker.Milestone Bhttps://code.briarproject.org/briar/briar/-/issues/167Replace TransportConfig with namespaced Settings2018-06-12T11:32:36ZakwizgranReplace TransportConfig with namespaced SettingsThe Tor and Bluetooth plugins use a mixture of Settings and TransportConfig to store their configuration. No other plugins use TransportConfig.
Add namespaces to Settings so all components can use them without treading on each other's...The Tor and Bluetooth plugins use a mixture of Settings and TransportConfig to store their configuration. No other plugins use TransportConfig.
Add namespaces to Settings so all components can use them without treading on each other's toes, and remove TransportConfig.
Plugins should be able to access their settings through the PluginCallback, as they currently can for TransportConfig. Perhaps the PluginManager should also push updated settings to the plugins so they don't have to listen on the EventBus?Milestone BSantiago Torres-AriasSantiago Torres-Ariashttps://code.briarproject.org/briar/briar/-/issues/181Restructure the Dashboard2018-06-12T11:32:35ZErnir ErlingssonRestructure the DashboardRestructure the dashboard with a navigation drawer and use fragmentsRestructure the dashboard with a navigation drawer and use fragmentsMilestone Bhttps://code.briarproject.org/briar/briar/-/issues/184Disabling Bluetooth adapter on UI thread violates Strict Mode2018-06-12T11:32:35ZakwizgranDisabling Bluetooth adapter on UI thread violates Strict ModeOn the Galaxy Nexus (Android 4.3), BluetoothAdapter#disable() results in a disk write, which violates strict mode. Maybe we should run the enable() and disable() calls on the AndroidExecutor?
```
12-17 12:19:33.868 29626-29626/org.br...On the Galaxy Nexus (Android 4.3), BluetoothAdapter#disable() results in a disk write, which violates strict mode. Maybe we should run the enable() and disable() calls on the AndroidExecutor?
```
12-17 12:19:33.868 29626-29626/org.briarproject D/StrictMode: StrictMode policy violation; ~duration=319 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=287 violation=1
at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1097)
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1043)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:779)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.android.providers.settings.SettingsProvider.insertForUser(SettingsProvider.java:914)
at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:634)
at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:818)
at android.provider.Settings$Global.putStringForUser(Settings.java:5529)
at android.provider.Settings$Global.putString(Settings.java:5519)
at android.provider.Settings$Global.putInt(Settings.java:5607)
at com.android.server.BluetoothManagerService.persistBluetoothSetting(BluetoothManagerService.java:255)
at com.android.server.BluetoothManagerService.disable(BluetoothManagerService.java:439)
at android.bluetooth.IBluetoothManager$Stub.onTransact(IBluetoothManager.java:116)
at android.os.Binder.execTransact(Binder.java:388)
at dalvik.system.NativeStart.run(Native Method)
# via Binder call with stack:
android.os.StrictMode$LogStackTrace
at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:1687)
at android.os.Parcel.readExceptionCode(Parcel.java:1413)
at android.os.Parcel.readException(Parcel.java:1382)
at android.bluetooth.IBluetoothManager$Stub$Proxy.disable(IBluetoothManager.java:286)
at android.bluetooth.BluetoothAdapter.disable(BluetoothAdapter.java:550)
at org.briarproject.android.SettingsActivity.onClick(SettingsActivity.java:297)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
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)
```Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/195Notification about private messages should go away when viewing messages2018-06-12T11:32:35ZTorsten GroteNotification about private messages should go away when viewing messagesWhen viewing the private messages, the notification about these private messages should automatically be dismissed.When viewing the private messages, the notification about these private messages should automatically be dismissed.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/211PanicKit Response: Uninstall Briar2018-06-12T11:32:34ZTorsten GrotePanicKit Response: Uninstall BriarIt is possible to not only purge all data, but also to install Briar completely, so that there are no (obvious) clues that it was installed and used at all.
Uninstalling should be added as another configurable Panic Response.It is possible to not only purge all data, but also to install Briar completely, so that there are no (obvious) clues that it was installed and used at all.
Uninstalling should be added as another configurable Panic Response.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/217Tor Connectivity Issues2018-06-12T11:32:34ZTorsten GroteTor Connectivity IssuesI have issues with Briar contacts seeing each other online. It works fine after adding the contacts. But after some time, when they have different IP addresses in the local network, they never turn up as online.
Connecting through Tor...I have issues with Briar contacts seeing each other online. It works fine after adding the contacts. But after some time, when they have different IP addresses in the local network, they never turn up as online.
Connecting through Tor does not seem to work. They try to connect to the proper hidden services addresses, but in the log there is just this without further information:
```
org.briarproject I/TorPlugin: Could not connect to [bla].onion
```
Maybe, the tor hidden service performance patch is missing from the latest tor binaries? Without that patch we used to get a lot of connection failures.
Maybe this can be investigated along with #203.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/218UTF-8 string encoding/decoding fails with POSIX locale2018-06-12T11:32:34ZakwizgranUTF-8 string encoding/decoding fails with POSIX localeThe unit tests `BdfReaderImplTest#testReadUtf8String()` and `BdfWriterImplTest#testWriteUtf8String()` fail on a Linux system with the following locale settings:
```
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POS...The unit tests `BdfReaderImplTest#testReadUtf8String()` and `BdfWriterImplTest#testWriteUtf8String()` fail on a Linux system with the following locale settings:
```
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
```
Compilation also produces errors for these tests along with MetadataEncoderImplTest and MetadataParserImplTest, which may be related to the use of Unicode characters in source files. Example:
```
/home/tests/briar/briar-tests/src/org/briarproject/data/MetadataEncoderParserImplTest.java:76: error: unmappable character for encoding ASCII
d.put("test", "abcdefghilkmnopqrst ?????????????????? \uFDD0\uFDD1\uFDD2\uFDD3");
```Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/223Unable to add contacts via Bluetooth with Android 62018-06-12T11:32:34ZTorsten GroteUnable to add contacts via Bluetooth with Android 6Apparently, you need the `ACCESS_COARSE_LOCATION` permission to use Bluetooth on Android 6. So we need to ask the user to grant this permission before contacts can be added via Bluetooth.
To quote from the [issue report](https://code....Apparently, you need the `ACCESS_COARSE_LOCATION` permission to use Bluetooth on Android 6. So we need to ask the user to grant this permission before contacts can be added via Bluetooth.
To quote from the [issue report](https://code.google.com/p/android/issues/detail?id=189090):
> To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans, your app
> must now have the `ACCESS_FINE_LOCATION` or `ACCESS_COARSE_LOCATION` permissions
This is a sub-issue of #158.Milestone BTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/224Adding existing contact with another identity fails2018-06-12T11:32:33ZTorsten GroteAdding existing contact with another identity failsSteps to reproduce:
* Add contact X with first identity A
* Create second identity B
* Add contact X with second identity B
Observe how adding contact X fails while it succeeds for user X.Steps to reproduce:
* Add contact X with first identity A
* Create second identity B
* Add contact X with second identity B
Observe how adding contact X fails while it succeeds for user X.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/225Bluetooth plugin is broken on Android 62018-06-12T11:32:33ZakwizgranBluetooth plugin is broken on Android 6Android 6 no longer allows access to the local Bluetooth address. `BluetoothAdapter.getAddress()` now returns a fixed value. This will break our ability to give our address to contacts so they can connect without performing discovery.
...Android 6 no longer allows access to the local Bluetooth address. `BluetoothAdapter.getAddress()` now returns a fixed value. This will break our ability to give our address to contacts so they can connect without performing discovery.
https://developer.android.com/intl/ko/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id
The plugin still uses BluetoothAdapter.getAddress(), it's only `TestingActivity` and `CrashReportActivity` that look at the value in `Settings.Secure`. we need to add a method (maybe in `AndroidUtils`?) for getting the value from the adapter, checking whether it's valid, getting the value from `Settings.Secure` if it's not, and throwing an exception if there's not a valid address there either.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/226Fix logic for disabling Bluetooth at shutdown2018-06-12T11:32:33ZakwizgranFix logic for disabling Bluetooth at shutdownIf Bluetooth is disabled when the app starts and the user or another app subsequently enables it, Briar will disable it when shutting down.
The current logic checks whether Bluetooth was disable at startup, and if si, disables it at s...If Bluetooth is disabled when the app starts and the user or another app subsequently enables it, Briar will disable it when shutting down.
The current logic checks whether Bluetooth was disable at startup, and if si, disables it at shutdown. What it should do instead is check whether Bluetooth was disabled startup *and* Briar enabled it at startup, and if so, disable it at shutdown.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/227Contact list not updating when contact is removed2018-06-12T11:32:33ZakwizgranContact list not updating when contact is removedMilestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/228Briar crashes when TorPlugin tries to create a connection2018-06-12T11:32:33Zstr4dBriar crashes when TorPlugin tries to create a connection```
java.lang.NullPointerException: Attempt to write to field 'java.io.OutputStream net.sourceforge.jsocks.Proxy.out' on a null object reference
at net.sourceforge.jsocks.SocksSocket.doDirect(SocksSocket.java:279)
at net.sourceforge...```
java.lang.NullPointerException: Attempt to write to field 'java.io.OutputStream net.sourceforge.jsocks.Proxy.out' on a null object reference
at net.sourceforge.jsocks.SocksSocket.doDirect(SocksSocket.java:279)
at net.sourceforge.jsocks.SocksSocket.<init>(SocksSocket.java:100)
at org.briarproject.plugins.tor.TorPlugin.createConnection(TorPlugin.java:536)
at org.briarproject.plugins.tor.TorPlugin$2.run(TorPlugin.java:515)
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)
```
In the library sources that Gradle downloaded for me, it looks like the proxy field of the jsocks `SocksSocket` constructor is ignored completely, but the `doDirect()` internal function called by that constructor uses the unset `proxy` variable. This looks like an upstream bug. I don't know how this is working for anyone else, given that the jsocks library is verified by Gradle Witness.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/234Remove consumers from BdfWriter2018-06-12T11:32:33ZakwizgranRemove consumers from BdfWriterMilestone Bakwizgranakwizgran