briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-04-19T11:27:41Zhttps://code.briarproject.org/briar/briar/-/issues/1607OOM errors2022-04-19T11:27:41ZakwizgranOOM errorsRecently we've had four crash reports with OOM errors. Three of the errors had the Rome RSS library in the stacktrace; the fourth happened in UI code but the log showed that Rome had recently thrown a parsing exception. We upgraded Rome ...Recently we've had four crash reports with OOM errors. Three of the errors had the Rome RSS library in the stacktrace; the fourth happened in UI code but the log showed that Rome had recently thrown a parsing exception. We upgraded Rome from 1.7.3 to 1.10.0 in ccbeee60 (included in Briar 1.1.3).
~~I suspect the problem is [this bug](https://github.com/rometools/rome/issues/401), which was fixed in Rome 1.12.0, so upgrading may fix the issue.~~
Upgrading Rome didn't fix the issue. We've had 23 OOM reports with various stacktraces in versions 1.1.7 to 1.2.3 beta.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1606ClassCastException when opening conversation with contact who supports images2019-06-28T13:28:39ZakwizgranClassCastException when opening conversation with contact who supports images* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view...* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view.TextAttachmentController
at org.briarproject.briar.android.conversation.ConversationActivity.showImageOnboarding(ConversationActivity.java:730)
at org.briarproject.briar.android.conversation.ConversationActivity.lambda$tKsX2hu-pmpHBYdC5ev_sWoOCXk(Unknown Source:0)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationActivity$tKsX2hu-pmpHBYdC5ev_sWoOCXk.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```
The crash is caused by failing to check the image attachments feature flag before calling showImageOnboarding(). This is fixed on master but will happen for Briar 1.1.7 (and possibly some earlier releases) when contacts upgrade to a version that supports image attachments, including 1.2 and 1.3 alpha releases.
Fortunately I've found a sneaky workaround: we bump the client minor version to 2. Briar 1.1.7 only considers that a contact supports image attachments if the minor version is exactly 1 (this is also fixed on master, but fortunately didn't make it into the 1.1.7 release).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1605Allow access to urls with a click2019-06-28T09:28:15ZjomocuAllow access to urls with a clickIt would be great, to support that function, even for special domains (.bit .o among many others)
https://www.opennic.org
regardsIt would be great, to support that function, even for special domains (.bit .o among many others)
https://www.opennic.org
regardshttps://code.briarproject.org/briar/briar/-/issues/1604Briar desktop (Idea)2019-06-28T09:27:21ZjomocuBriar desktop (Idea)It would be great to have "briar desktop" for computers.
Windows, Linux and Mac
RegardsIt would be great to have "briar desktop" for computers.
Windows, Linux and Mac
Regardshttps://code.briarproject.org/briar/briar/-/issues/1603Calls and videocalls (Idea)2019-06-28T10:36:21ZjomocuCalls and videocalls (Idea)I think it would be great to add calls and video calls to the application.
With the possibility of "Compressing data" in mobile data...
Greetings and good projectI think it would be great to add calls and video calls to the application.
With the possibility of "Compressing data" in mobile data...
Greetings and good projecthttps://code.briarproject.org/briar/briar/-/issues/1602Add block status table to database2022-06-15T12:02:16ZakwizgranAdd block status table to databaseFor multi-block messages we need to track the sync status of individual blocks as well as whole messages.
Subtask of #1240.For multi-block messages we need to track the sync status of individual blocks as well as whole messages.
Subtask of #1240.Multi-block messagesakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1601Delete block rows for deleted messages2022-06-15T12:02:17ZakwizgranDelete block rows for deleted messagesAs well as deleting the content of blocks when we delete a message, it would be nice if we could delete the rows from the blocks table.
Subtask of #1239.As well as deleting the content of blocks when we delete a message, it would be nice if we could delete the rows from the blocks table.
Subtask of #1239.Multi-block messageshttps://code.briarproject.org/briar/briar/-/issues/1600AttachmentRetrieverIntegrationTest fails on emulator2020-11-15T18:13:33ZakwizgranAttachmentRetrieverIntegrationTest fails on emulatorSeveral tests in AttachmentRetrieverIntegrationTest fail on the API 21 emulator. It looks like some of them failed in the original commit of the test (it was called AttachmentControllerTest at the time) and others have been broken by sub...Several tests in AttachmentRetrieverIntegrationTest fail on the API 21 emulator. It looks like some of them failed in the original commit of the test (it was called AttachmentControllerTest at the time) and others have been broken by subsequent changes.
The failures from the original commit all seem to involve the same issue: the file extension being `jpeg` rather than `jpg`. I guess the platform's behaviour probably changed some time between API 21 and now, and it doesn't seem likely to cause problems beyond the test failure.
```
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testSmallJpegImageHealsWrongMimeType(AttachmentControllerTest.java:125)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testHighError(AttachmentControllerTest.java:317)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testWideError(AttachmentControllerTest.java:332)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testNoSizeJpeg(AttachmentControllerTest.java:71)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testSmallJpegImage(AttachmentControllerTest.java:109)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testBigJpegImage(AttachmentControllerTest.java:141)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testLottaPixels(AttachmentControllerTest.java:203)
```
The failures on current master involve content types as well as file extensions.
```
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testGimpCrash(AttachmentRetrieverIntegrationTest.java:156)
...
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testUberGif(AttachmentRetrieverIntegrationTest.java:111)
...
org.junit.ComparisonFailure: expected:<image/[pn]g> but was:<image/[jpe]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testImageIoCrash(AttachmentRetrieverIntegrationTest.java:141)
...
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testOptiPngAfl(AttachmentRetrieverIntegrationTest.java:171)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testHighError(AttachmentRetrieverIntegrationTest.java:241)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testWideError(AttachmentRetrieverIntegrationTest.java:256)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testSmallJpegImage(AttachmentRetrieverIntegrationTest.java:65)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testBigJpegImage(AttachmentRetrieverIntegrationTest.java:81)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testLottaPixels(AttachmentRetrieverIntegrationTest.java:127)
```https://code.briarproject.org/briar/briar/-/issues/1599[headless] obsolete dependency integrity assertion2019-08-14T14:22:42Ziwakeh[headless] obsolete dependency integrity assertion[Line 61](https://code.briarproject.org/briar/briar/blob/master/briar-headless/witness.gradle#L61) in briar-headless/witness.gradle seems redundant.[Line 61](https://code.briarproject.org/briar/briar/blob/master/briar-headless/witness.gradle#L61) in briar-headless/witness.gradle seems redundant.https://code.briarproject.org/briar/briar/-/issues/1598headless: add RSS feed functionality2019-08-08T12:58:09Ziwakehheadless: add RSS feed functionalityIt would be great to have the RSS feed functionality in briar-headless.
(I could help with the implementation with a little info about how to approach this best.)It would be great to have the RSS feed functionality in briar-headless.
(I could help with the implementation with a little info about how to approach this best.)https://code.briarproject.org/briar/briar/-/issues/1597make headless module start w/o running Tor2019-07-14T15:57:14Ziwakehmake headless module start w/o running TorIs there a way to reuse an existing Tor connection and avoid starting a Tor instance when running the headless jar?
Or, simply run it w/o Tor?Is there a way to reuse an existing Tor connection and avoid starting a Tor instance when running the headless jar?
Or, simply run it w/o Tor?https://code.briarproject.org/briar/briar/-/issues/1596Make migrations idempotent where possible2020-11-15T18:14:12ZakwizgranMake migrations idempotent where possibleThe database migrations use data definition commands (`ALTER TABLE`, etc) that H2 commits automatically as soon as they're executed, even though we execute the commands within a transaction. If a crash happens during a migration, the DB ...The database migrations use data definition commands (`ALTER TABLE`, etc) that H2 commits automatically as soon as they're executed, even though we execute the commands within a transaction. If a crash happens during a migration, the DB may be left in a state where the migration has been partially applied. If the data definition commands aren't idempotent then subsequent attempts to apply the migration will fail, making it impossible to complete the migration and open the DB.
Where possible we should use data definition commands that are idempotent. For example, `DELETE COLUMN` should be `DELETE COLUMN IF EXISTS`, `CREATE COLUMN` should be `CREATE COLUMN IF NOT EXISTS`, etc.https://code.briarproject.org/briar/briar/-/issues/1595Add blocks table to database2022-06-15T12:02:17ZakwizgranAdd blocks table to databaseSubtask of #1240Subtask of #1240Multi-block messagesakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1594Preview fails to load when sending second message with attachments2019-10-09T12:18:24ZakwizgranPreview fails to load when sending second message with attachmentsAfter sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).After sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1593RuntimeException when scanning QR code2019-10-09T12:18:48ZakwizgranRuntimeException when scanning QR codeBriar crashed while scanning a QR code. This looks like a bug in libcore or the standard library so I'm not adding it to the current milestone for now. If we get crash reports then let's add it to the milestone and look for a workaround....Briar crashed while scanning a QR code. This looks like a bug in libcore or the standard library so I'm not adding it to the current milestone for now. If we get crash reports then let's add it to the milestone and look for a workaround.
* Android version: 9 (EMUI 9.0.1)
* Phone model: Honor 8A
* Briar version: current master (d210215b)
Stacktrace:
```
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:355)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.AssertionError: impossible
at java.lang.Enum$1.create(Enum.java:272)
at java.lang.Enum$1.create(Enum.java:262)
at libcore.util.BasicLruCache.get(BasicLruCache.java:58)
at java.lang.Enum.getSharedConstants(Enum.java:289)
at java.lang.Class.getEnumConstantsShared(Class.java:2423)
at java.util.EnumMap.getKeyUniverse(EnumMap.java:755)
at java.util.EnumMap.<init>(EnumMap.java:138)
at com.google.zxing.Result.putMetadata(Result.java:117)
at com.google.zxing.qrcode.QRCodeReader.decode(QRCodeReader.java:90)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:109)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:91)
at android.os.AsyncTask$2.call(AsyncTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.NoSuchMethodException: values []
at java.lang.Class.getMethod(Class.java:2068)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at java.lang.Enum$1.create(Enum.java:268)
at java.lang.Enum$1.create(Enum.java:262)
at libcore.util.BasicLruCache.get(BasicLruCache.java:58)
at java.lang.Enum.getSharedConstants(Enum.java:289)
at java.lang.Class.getEnumConstantsShared(Class.java:2423)
at java.util.EnumMap.getKeyUniverse(EnumMap.java:755)
at java.util.EnumMap.<init>(EnumMap.java:138)
at com.google.zxing.Result.putMetadata(Result.java:117)
at com.google.zxing.qrcode.QRCodeReader.decode(QRCodeReader.java:90)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:109)
at org.briarproject.briar.android.keyagreement.QrCodeDecoder$DecoderTask.doInBackground(QrCodeDecoder.java:91)
at android.os.AsyncTask$2.call(AsyncTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
```Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1592Improve handling of missing attachments in UI2020-10-30T16:20:25ZakwizgranImprove handling of missing attachments in UIWhen MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correct...When MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correctly when it arrives (e.g. caching an incomplete list of AttachmentItems).
Subtask of #1438.Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1591RuntimeException after sending crash report2019-06-18T16:50:53ZakwizgranRuntimeException after sending crash report* Android version: 9
* Phone model: Honor 8A
* Briar version: current master (30e0be9f)
Steps to reproduce:
* Cause a crash (e.g. with the crash button in the settings screen)
* Send a crash report or dismiss the report dialog
* Expecte...* Android version: 9
* Phone model: Honor 8A
* Briar version: current master (30e0be9f)
Steps to reproduce:
* Cause a crash (e.g. with the crash button in the settings screen)
* Send a crash report or dismiss the report dialog
* Expected: The dialog disappears
* Actual: The dialog repeatedly reappears with new crashes, even after pressing the home button and relaunching Briar
Stacktrace:
```
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar.android.debug/org.briarproject.briar.android.navdrawer.NavDrawerActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class android.support.v4.app.FragmentManagerState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3548)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2155)
at android.os.Handler.dispatchMessage(Handler.java:109)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7539)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class android.support.v4.app.FragmentManagerState
at android.os.Parcel.readParcelableCreator(Parcel.java:2849)
at android.os.Parcel.readParcelable(Parcel.java:2771)
at android.os.Parcel.readValue(Parcel.java:2674)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3043)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getBoolean(BaseBundle.java:898)
at android.app.Activity.restoreHasCurrentPermissionRequest(Activity.java:7768)
at android.app.Activity.performCreate(Activity.java:7436)
at android.app.Activity.performCreate(Activity.java:7431)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3343)
... 11 more
```Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1590IllegalStateException: Cannot invoke setValue on a background thread2019-06-18T11:58:53ZakwizgranIllegalStateException: Cannot invoke setValue on a background threadCrashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at androi...Crashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:279)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at org.briarproject.briar.android.attachment.AttachmentCreator.resetState(AttachmentCreator.java:183)
at org.briarproject.briar.android.attachment.AttachmentCreator.onAttachmentsSent(AttachmentCreator.java:164)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeMessage(ConversationViewModel.java:295)
at org.briarproject.briar.android.conversation.ConversationViewModel.lambda$createMessage$8$ConversationViewModel(ConversationViewModel.java:286)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationViewModel$1LsoWDT2XwB7wPxBWawY1IIRFR0.run(Unknown Source:10)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0$TimeLoggingExecutor(TimeLoggingExecutor.java:36)
at org.briarproject.bramble.-$$Lambda$TimeLoggingExecutor$Bqrtbsq_8LcRPoTWBOef6xh7gJg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
```
This is my fault - I recommended moving the onAttachmentsSent() call to a place that's on the UI thread on my branch, forgetting that it's on the crypto executor on master.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1589Use consistent scroll behaviour across the app2021-12-21T23:12:35ZakwizgranUse consistent scroll behaviour across the appFollowing the discussion on #713 and other tickets listed below, let's use consistent scroll behaviour across the app.
Related to #713, #872, #1073, #1192, #1200, #1361, #1337, #1467, #1493.Following the discussion on #713 and other tickets listed below, let's use consistent scroll behaviour across the app.
Related to #713, #872, #1073, #1192, #1200, #1361, #1337, #1467, #1493.https://code.briarproject.org/briar/briar/-/issues/1588New setting: Time window / Interval in which Briar goes online2022-01-04T16:11:37ZmicressorNew setting: Time window / Interval in which Briar goes onlineI want a way to set Briar so that the app connects at an interval of X for Y minutes to synchronize messages.
As a second possibility, a period where Briar connects to synchronize messages. For example between X and Y o'clock every day....I want a way to set Briar so that the app connects at an interval of X for Y minutes to synchronize messages.
As a second possibility, a period where Briar connects to synchronize messages. For example between X and Y o'clock every day.
The idea behind it is to make online time more effective due to the high battery consumption. Two users could agree to configure their Briar Apps between X and Y to go online and synchronize messages.