briar issueshttps://code.briarproject.org/groups/briar/-/issues2018-06-12T11:32:34Zhttps://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/220Give option to clear DB when in inconsistent state2018-06-12T11:32:34ZTorsten GroteGive option to clear DB when in inconsistent stateWhen `StartupFailureActivity` is started and there is a `DB_ERROR`, there should be the option to reset the database like when the password is forgotten.When `StartupFailureActivity` is started and there is a `DB_ERROR`, there should be the option to reset the database like when the password is forgotten.https://code.briarproject.org/briar/briar/-/issues/221Metadata for groups2018-06-12T11:32:34ZakwizgranMetadata for groupsSubtask of #112.Subtask of #112.Milestone Aakwizgranakwizgranhttps://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/230Make timestamps prettier and more useful2018-06-12T11:32:33ZErnir ErlingssonMake timestamps prettier and more usefulFor recent timestamps we should display the duration since that timestamp, "prettify" it. We don't want the user to have to subtract the current time from the timestamp to find out how long ago something is.
Examples
"2 minutes ago"
...For recent timestamps we should display the duration since that timestamp, "prettify" it. We don't want the user to have to subtract the current time from the timestamp to find out how long ago something is.
Examples
"2 minutes ago"
"3 hours ago"
etc.
Relevant links:
http://stackoverflow.com/questions/13018550/time-since-ago-library-for-android-java
http://www.ocpsoft.org/prettytime/
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/231Missing Author names when chatting2018-06-12T11:32:33ZErnir ErlingssonMissing Author names when chattingThe Author names should be displayed while private messaging so that it is easy for the user to figure out which messages belong to him and which belong to the respective contact. Also, this is important to remind the app's user of which...The Author names should be displayed while private messaging so that it is easy for the user to figure out which messages belong to him and which belong to the respective contact. Also, this is important to remind the app's user of which author he used to connect with the contact.https://code.briarproject.org/briar/briar/-/issues/234Remove consumers from BdfWriter2018-06-12T11:32:33ZakwizgranRemove consumers from BdfWriterMilestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/235Potential deadlock in TransportKeyManager2018-06-12T11:32:33ZakwizgranPotential deadlock in TransportKeyManagerTransportKeyManager uses the single-threaded DatabaseExecutor to ensure its DB tasks write to the DB in the same order as they're queued. This makes it possible to keep TransportKeyManager's internal state consistent with the state of th...TransportKeyManager uses the single-threaded DatabaseExecutor to ensure its DB tasks write to the DB in the same order as they're queued. This makes it possible to keep TransportKeyManager's internal state consistent with the state of the DB without holding locks during DB calls.
To ensure that a StreamContext is never used twice, the two getStreamContext() methods wait for their DB tasks to complete before returning. This will cause deadlock: if the methods are called on the DatabaseExecutor thread, as their DB tasks will be queued behind them and will never complete.
One way to fix this would be for TransportKeyManager to keep its own single-threaded executor for running its DB tasks. KeyManagerImpl already has a Timer thread that could be converted into an executor.
Another possibility would be to return a Future<StreamContext>.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/238Allow messages to be deleted2018-06-12T11:32:33ZakwizgranAllow messages to be deletedAllow messages to be deleted from the database. If a message being deleted is shared, we need to keep enough information about it to avoid syncing it back to life.Allow messages to be deleted from the database. If a message being deleted is shared, we need to keep enough information about it to avoid syncing it back to life.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/239Implement proguard and clean up the gradle dependencies2018-06-12T11:32:33ZErnir ErlingssonImplement proguard and clean up the gradle dependenciesFelt right to make this atomicFelt right to make this atomicMilestone Bhttps://code.briarproject.org/briar/briar/-/issues/241Don't show persistent notification on lock screen2018-06-12T11:32:33ZakwizgranDon't show persistent notification on lock screenAndroid 5 and 6 allow notifications to be shown on the lock screen. Configure Briar's persistent notification so it doesn't appear there.Android 5 and 6 allow notifications to be shown on the lock screen. Configure Briar's persistent notification so it doesn't appear there.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/242Anonymous forum post crashes ReadForumPostActivity2018-06-12T11:32:33ZakwizgranAnonymous forum post crashes ReadForumPostActivityThe crash is caused by an IllegalStateException thrown when no author reference is retrieved from the ReferenceManager.The crash is caused by an IllegalStateException thrown when no author reference is retrieved from the ReferenceManager.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/243Rotating ReadForumPostActivity causes post to appear anonymous2018-06-12T11:32:33ZakwizgranRotating ReadForumPostActivity causes post to appear anonymousWhen viewing a pseudonymous forum post in ReadForumPostActivity, rotating the screen causes the post to appear anonymous.When viewing a pseudonymous forum post in ReadForumPostActivity, rotating the screen causes the post to appear anonymous.Milestone Bakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/244IllegalStateException: ContactListFragment not attached to Activity2018-06-12T11:32:33ZTorsten GroteIllegalStateException: ContactListFragment not attached to ActivityWhile testing my own work, I noticed this unrelated crash:
```
java.lang.IllegalStateException: Fragment ContactListFragment{8b90f25} not attached to Activity
at android.support.v4.app.Fragment....While testing my own work, I noticed this unrelated crash:
```
java.lang.IllegalStateException: Fragment ContactListFragment{8b90f25} not attached to Activity
at android.support.v4.app.Fragment.getResources(Fragment.java:639)
at org.briarproject.android.contact.ContactListFragment.onCreateOptionsMenu(ContactListFragment.java:133)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2044)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2114)
at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:270)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:299)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:241)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85)
at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:443)
at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:60)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
```Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/245Create constants for keys used to store extras in intents2018-06-12T11:32:33ZakwizgranCreate constants for keys used to store extras in intents> @ernir: We really should make constants for all of these keys, I don't want to spend any time debugging in the future because of a spelling error...> @ernir: We really should make constants for all of these keys, I don't want to spend any time debugging in the future because of a spelling error...Milestone E