kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix invalid attachment data during sms export.
rodzic
c75a9b577d
commit
2b0e9783a7
|
@ -5300,6 +5300,10 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MessageId getCurrentId() {
|
||||||
|
return new MessageId(CursorUtil.requireLong(cursor, ID));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull MessageExportState getMessageExportStateForCurrentRecord() {
|
public @NonNull MessageExportState getMessageExportStateForCurrentRecord() {
|
||||||
byte[] messageExportState = CursorUtil.requireBlob(cursor, MessageTable.EXPORT_STATE);
|
byte[] messageExportState = CursorUtil.requireBlob(cursor, MessageTable.EXPORT_STATE);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.thoughtcrime.securesms.exporter
|
package org.thoughtcrime.securesms.exporter
|
||||||
|
|
||||||
|
import org.json.JSONException
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
import org.signal.smsexporter.ExportableMessage
|
import org.signal.smsexporter.ExportableMessage
|
||||||
import org.signal.smsexporter.SmsExportState
|
import org.signal.smsexporter.SmsExportState
|
||||||
|
@ -92,6 +93,11 @@ class SignalSmsExportReader(
|
||||||
throw NoSuchElementException()
|
throw NoSuchElementException()
|
||||||
}
|
}
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
|
if (e.cause is JSONException) {
|
||||||
|
Log.w(TAG, "Error processing attachment json, skipping message.", e)
|
||||||
|
return ExportableMessage.Skip(messageReader!!.currentId)
|
||||||
|
}
|
||||||
|
|
||||||
Log.w(TAG, "Error processing message: isMms: ${record?.isMms} type: ${record?.type}")
|
Log.w(TAG, "Error processing message: isMms: ${record?.isMms} type: ${record?.type}")
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,6 +180,7 @@ class SignalSmsExportService : SmsExportService() {
|
||||||
val messageId: Any = when (this) {
|
val messageId: Any = when (this) {
|
||||||
is ExportableMessage.Mms<*> -> id
|
is ExportableMessage.Mms<*> -> id
|
||||||
is ExportableMessage.Sms<*> -> id
|
is ExportableMessage.Sms<*> -> id
|
||||||
|
is ExportableMessage.Skip<*> -> id
|
||||||
}
|
}
|
||||||
|
|
||||||
if (messageId is MessageId) {
|
if (messageId is MessageId) {
|
||||||
|
|
|
@ -61,4 +61,9 @@ sealed interface ExportableMessage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class Skip<out ID : Any>(
|
||||||
|
val id: ID,
|
||||||
|
override val exportState: SmsExportState = SmsExportState()
|
||||||
|
) : ExportableMessage
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,10 @@ abstract class SmsExportService : Service() {
|
||||||
val successful = when (message) {
|
val successful = when (message) {
|
||||||
is ExportableMessage.Sms<*> -> exportSms(exportState, message)
|
is ExportableMessage.Sms<*> -> exportSms(exportState, message)
|
||||||
is ExportableMessage.Mms<*> -> exportMms(exportState, message)
|
is ExportableMessage.Mms<*> -> exportMms(exportState, message)
|
||||||
|
is ExportableMessage.Skip<*> -> {
|
||||||
|
onMessageExportSucceeded(message)
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!successful) {
|
if (!successful) {
|
||||||
|
|
Ładowanie…
Reference in New Issue