|
|
|
@ -389,27 +389,29 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
|
|
|
|
|
Log.e(outbox.name, ex);
|
|
|
|
|
EntityLog.log(this, "Send " + Log.formatThrowable(ex, false));
|
|
|
|
|
|
|
|
|
|
boolean unrecoverable = (op.tries >= RETRY_MAX ||
|
|
|
|
|
ex instanceof OutOfMemoryError ||
|
|
|
|
|
ex instanceof MessageRemovedException ||
|
|
|
|
|
ex instanceof FileNotFoundException ||
|
|
|
|
|
(ex instanceof AuthenticationFailedException && !ConnectionHelper.isIoError(ex)) ||
|
|
|
|
|
ex instanceof SendFailedException ||
|
|
|
|
|
ex instanceof IllegalArgumentException);
|
|
|
|
|
|
|
|
|
|
db.operation().setOperationError(op.id, Log.formatThrowable(ex));
|
|
|
|
|
if (message != null) {
|
|
|
|
|
db.message().setMessageError(message.id, Log.formatThrowable(ex));
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
int tries_left = (unrecoverable ? 0 : RETRY_MAX - op.tries);
|
|
|
|
|
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
|
|
|
|
nm.notify("send:" + message.id, 1, getNotificationError(
|
|
|
|
|
MessageHelper.formatAddressesShort(message.to), ex, RETRY_MAX - op.tries).build());
|
|
|
|
|
MessageHelper.formatAddressesShort(message.to), ex, tries_left).build());
|
|
|
|
|
} catch (Throwable ex1) {
|
|
|
|
|
Log.w(ex1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (op.tries >= RETRY_MAX ||
|
|
|
|
|
ex instanceof OutOfMemoryError ||
|
|
|
|
|
ex instanceof MessageRemovedException ||
|
|
|
|
|
ex instanceof FileNotFoundException ||
|
|
|
|
|
(ex instanceof AuthenticationFailedException &&
|
|
|
|
|
!ConnectionHelper.isIoError(ex)) ||
|
|
|
|
|
ex instanceof SendFailedException ||
|
|
|
|
|
ex instanceof IllegalArgumentException) {
|
|
|
|
|
if (unrecoverable) {
|
|
|
|
|
Log.w("Unrecoverable");
|
|
|
|
|
db.operation().deleteOperation(op.id);
|
|
|
|
|
ops.remove(op);
|
|
|
|
|