From 1865871b0ca8ad86dd94862e06c76c85867c5c68 Mon Sep 17 00:00:00 2001 From: Brice Date: Fri, 21 Aug 2020 09:56:01 +1000 Subject: [PATCH 1/6] french labels updaed --- res/values-fr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index b63a1c12c7..9beb68eea1 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -123,7 +123,7 @@ Ajouter une pièce jointe Sélectionner les renseignements du contact Rédiger un message - Désolé, une erreur de mise en place de votre pièce jointe est survenue. + Une erreur est survenue lors du chargement de la pièce jointe. Le destinataire n’est pas une adresse texto ou courriel valide ! Le message est vide ! Membres du groupe @@ -145,7 +145,7 @@ Vous pourrez de nouveau recevoir les messages et appels de ce contact. Les membres actuels pourront vous ajouter au groupe de nouveau. Débloquer - La pièce jointe dépasse la limite de taille pour le type de message que vous envoyé. + La pièce jointe dépasse la limite de taille autorisée. L’appareil photo n’est pas disponible Impossible d’enregistrer l’audio ! Il n’y a aucune appli pour gérer ce lien sur votre appareil. From aadbe470ae7037fdef68bde17124e8f6699652bf Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 21 Aug 2020 10:31:46 +1000 Subject: [PATCH 2/6] Re-enable Persian translation --- res/values-fa/strings.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 05b162e14f..f478e99355 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1220,7 +1220,6 @@ - From 7ac94089a2494f727834ef2016b217ac2af51d3b Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 21 Aug 2020 10:35:32 +1000 Subject: [PATCH 3/6] Integrate improved Persian translation --- res/values-fa/strings.xml | 228 +++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 129 deletions(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index f478e99355..72a9e25ae7 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1221,208 +1221,178 @@ ادامه - رونویسی کردن + کپی کردن URL نامعتبر است - در کلیپ بورد کپی شد - پیوند دستگاه امکان پذیر نیست. - بعد - اشتراک گذاری - شناسه نامعتبر جلسه + در کلیپ‌بورد کپی شد + اتصال دستگاه ناموفق بود. + بعدی + اشتراک‌گذاری + شناسه‌ی Session نامعتبر است. لغو - شناسه جلسه شما + شناسه‌ی Session شما - جلسه شما از اینجا شروع می شود... - شناسه جلسه را ایجاد کنید - جلسه خود را ادامه دهید + Session شما از اینجا شروع می‌شود... + شناسه‌ی Session را ایجاد کنید + Session خود را ادامه دهید پیوند به یک حساب کاربری موجود - ارتباط دستگاه شما با موفقیت انجام نشد + اتصال دستگاه شما با موفقیت قطع شد - جلسه چیست؟ - این یک برنامه پیام رسانی غیرمتمرکز و رمزگذاری شده است - بنابراین اطلاعات شخصی یا ابرداده گفتگوی من جمع نمی شود؟ چگونه کار می کند؟ - استفاده از ترکیبی از فن آوری های رمزگذاری پیشرفته مسیریابی ناشناس و پایان به پایان. - دوستان اجازه نمی دهند تا دوستان از پیام رسان های مصالحه استفاده کنند. خواهش میکنم. + Session چیست؟ + Session یک برنامه پیام‌رسان غیرمتمرکز و رمزگذاری شده است. + پس اطلاعات شخصی من یا داده‌های گفت‌وگو‌هایم جمع‌آوری نمی‌شود؟ چگونه کار می‌کند؟ + Session با استفاده از ترکیبی از فناوری‌های پیشرفته مسیریابی ناشناس و رمزگذاری سرتاسری این کار را انجام می‌دهد. + یک دوست هیچ‌وقت به دوستان خود اجازه استفاده از پیام‌رسان‌های در معرض خطر را نمی‌دهد. - سلام به شناسه جلسه خود - شناسه جلسه شما آدرس منحصر به فردی است که افراد می توانند از آنها برای تماس با شما در جلسه استفاده کنند. بدون ارتباط با هویت واقعی شما ، شناسه جلسه شما کاملاً ناشناس و خصوصی است. - در کلیپ بورد کپی شد + به شناسه‌ی Session خود سلام کنید + شناسه‌ی Session شما آدرس منحصر به فردی است که افراد می‌توانند از طریق آن با شما در Session تماس بگیرند. شناسه‌ی Session شما، بدون اتصال با هویت واقعی شما، کاملاً ناشناس و خصوصی است. + در کلیپ‌بورد کپی شد - حساب خود را بازیابی کنید - عبارت بازیابی را هنگام ثبت نام برای بازیابی حساب خود وارد کنید. + حساب کاربری خود را بازیابی کنید + عبارت بازیابی را که هنگام نام‌نویسی برای بازیابی حساب به شما داده شده، وارد کنید. عبارت بازیابی خود را وارد کنید - دستگاه پیوند - شناسه جلسه را وارد کنید - اسکن کد QR - به تنظیمات > دستگاه ها > پیوند دستگاه در دستگاه دیگر خود بروید و سپس کد QR را که برای شروع کار پیوند داده است ، اسکن کنید. + اتصال دستگاه + شناسه‌ی Session را وارد کنید + کد QR را اسکن کنید + در دستگاه دیگر خود به "تنظیمات" بروید، و بعد دستگاه‌ها و سپس اتصال دستگاه را انتخاب کنید. سپس کد QR را برای اتصال دستگاه، اسکن کنید. - دستگاه خود را پیوند دهید - به تنظیمات > دستگاه ها > پیوند دستگاه در دستگاه دیگر خود بروید و سپس شناسه جلسه خود را در اینجا وارد کنید تا فرایند پیوند آغاز شود. - شناسه جلسه خود را وارد کنید + دستگاه خود را متصل کنید + در دستگاه دیگر خود به "تنظیمات" بروید، و بعد دستگاه‌ها و سپس اتصال دستگاه را انتخاب کنید. سپس شناسه‌ی Session خود را در اینجا وارد کنید تا کار اتصال شروع شود. + شناسه‌ی Session خود را وارد کنید - نام صفحه نمایش خود را انتخاب کنید - این نام شما هنگام استفاده از جلسه خواهد بود. این می تواند نام واقعی شما باشد ، نام مستعار یا هر چیز دیگری که دوست دارید. - نام نمایشگر را وارد کنید - لطفاً نام نمایشگر را انتخاب کنید - لطفاً یک نام نمایشگر را انتخاب کنید که فقط از نویسه های Az ، AZ ، 0-9 و _ تشکیل شده باشد - لطفاً نام نمایشگر کوتاه تری انتخاب کنید + نام خود را برای نمایش انتخاب کنید + این نام شما هنگام استفاده از Session خواهد بود. این نام می‌تواند نام واقعی شما، نام مستعار یا هر چیز دیگری که دوست دارید، باشد. + نام نمایشی را وارد کنید + لطفا نام نمایشی را انتخاب کنید + لطفا یک نام نمایشی را انتخاب کنید که فقط از اعداد و حروف Az ، AZ ، 0-9 و _ تشکیل شده باشد + لطفا نام نمایشی کوتاه‌تری انتخاب کنید - اعلانهای فشار - دو راه وجود دارد که جلسه می تواند اعلان های فشار را کنترل کند. حتما قبل از انتخاب توضیحات را با دقت بخوانید. - پیام ابری فایربیس - جلسه برای دریافت اعلان های فشار از سرویس پیام ابری فایربیس استفاده می کند. با اطمینان و بلافاصله از پیامهای جدید مطلع خواهید شد. استفاده از FCM بدان معنا است که آدرس IP و نشانه دستگاه شما در معرض گوگل قرار خواهد گرفت. اگر از اعلانهای فشار برای سایر برنامه ها استفاده می کنید ، این مورد در حال حاضر اینگونه خواهد بود. آدرس IP و نشانه دستگاه شما نیز در معرض Loki قرار خواهد گرفت ، اما پیام های شما هنوز هم از طریق رمزگذاری شده توسط اونیون و رمزگذاری نهایی به پایان می رسد ، بنابراین محتوای پیام های شما کاملاً خصوصی خواهد بود. - زمینه رای گیری - جلسه گاه به گاه پیام های جدید را در پس زمینه بررسی می کند. این محافظت کامل از ابرداده را تضمین می کند ، اما اعلان های پیام ممکن است به میزان قابل توجهی به تأخیر بیفتند. - توصیه شده - لطفا گزینه ای را انتخاب کنید + گزینه پیشنهادی + لطفا یک گزینه را انتخاب کنید - شما هنوز هیچ تماسی ندارید - شروع جلسه - آیا مطمئن هستید که می خواهید این گروه را ترک کنید؟ - نمی توان گروه را ترک کرد - آیا مطمئن هستید که می خواهید این مکالمه را حذف کنید؟ + فهرست مخاطبان شما خالی است. + شروع Session + آیا مطمئن هستید که می‌خواهید این گروه را ترک کنید؟ + ترک گروه انجام نشد + آیا مطمئن هستید که می‌خواهید این مکالمه را حذف کنید؟ مکالمه حذف شد - اعلانهای فشار - جلسه اکنون دو راه برای رسیدگی به اعلان های فشار دارد. حتما قبل از انتخاب توضیحات را با دقت بخوانید. - پیام ابری فایربیس - جلسه برای دریافت اعلان های فشار از سرویس پیام ابری فایربیس استفاده می کند. با اطمینان و بلافاصله از پیامهای جدید مطلع خواهید شد. استفاده از FCM بدان معنا است که آدرس IP و نشانه دستگاه شما در معرض گوگل قرار خواهد گرفت. اگر از اعلانهای فشار برای سایر برنامه ها استفاده می کنید ، این مورد در حال حاضر اینگونه خواهد بود. آدرس IP و نشانه دستگاه شما نیز در معرض Loki قرار خواهد گرفت ، اما پیام های شما هنوز هم از طریق رمزگذاری شده توسط پیاز و رمزگذاری نهایی به پایان می رسد ، بنابراین محتوای پیام های شما کاملاً خصوصی خواهد بود. - زمینه رای گیری - جلسه گاه به گاه پیام های جدید را در پس زمینه بررسی می کند. این محافظت کامل از ابرداده را تضمین می کند ، اما اعلان های پیام ممکن است به میزان قابل توجهی به تأخیر بیفتند. - توصیه شده - لطفا گزینه ای را انتخاب کنید - تایید - رد - عبارت بازیابی شما - با عبارت بازیابی خود مطابقت داشته باشید - عبارت بازیابی شما کلید اصلی شناسه جلسه شما است - در صورت عدم دسترسی به دستگاه خود می توانید از آن برای بازگرداندن شناسه جلسه استفاده کنید. عبارت بازیابی خود را در مکانی امن ذخیره کنید و آن را به کسی ندهید. - نگه دارید تا فاش شود + این عبارت بازیابی شماست + عبارت بازیابی شما کلید اصلی شناسه‌ی Session شما است - در صورت عدم دسترسی به دستگاه خود می توانید از آن برای بازگرداندن شناسه‌ی Session خود استفاده کنید. عبارت بازیابی خود را در مکانی امن ذخیره کنید و آن را به کسی ندهید. + نگه دارید تا نشان داده شود - با ذخیره کردن عبارت بازیابی ، حساب خود را ایمن کنید - برای فاش کردن عبارت بازیابی ، بر روی کلمات redacted ضربه زده و نگه دارید ، سپس با خیال راحت آن را ذخیره کنید تا شناسه جلسه خود را ایمن نمایید. + با ذخیره کردن عبارت بازیابی، از حساب خود را محافظت کنید + برای فاش کردن عبارت بازیابی، بر روی کلمات redacted ضربه زده و نگه دارید، سپس با خیال راحت آن را ذخیره کنید تا از شناسه‌ی Session خود محافظت نمایید. حتماً عبارت بازیابی خود را در مکانی امن ذخیره کنید مسیر - جلسه IP شما را با گزاف گویی پیام های خود از طریق چندین گره سرویس در شبکه غیرمتمرکز جلسه مخفی می کند. اینها کشورهایی هستند که اتصال شما در حال حاضر از طریق آن فراخوانی می شوند: + اپ Session، ‌آی‌پی شما را با استفاده از فرستادن پیام‌های‌تان از طریق چندین سرویسِ گره در شبکه غیرمتمرکز Session مخفی می‌کند. اینها کشورهایی هستند که اتصال شما در حال حاضر از طریق آن فراخوانی می‌شوند: شما - گره ورود + گره ورودی گره سرویس مقصد بیشتر بدانید - جلسه جدید - شناسه جلسه را وارد کنید - اسکن کد QR - برای شروع جلسه ، کد QR کاربر را اسکن کنید. با ضربه زدن روی نماد کد QR در تنظیمات حساب ، کدهای QR را می توان یافت. + Session جدید + شناسه‌ی Session را وارد کنید + کد QR را اسکن کنید + برای شروع Session، کد QR کاربر را اسکن کنید. با ضربه زدن روی نماد کد QR در تنظیمات حساب کاربری، کدهای QR را می‌توان یافت. شناسه گیرنده را وارد کنید - کاربران می توانند با وارد کردن به تنظیمات حساب خود و ضربه زدن به Share Share Session ID یا با به اشتراک گذاشتن کد QR خود ، شناسه جلسه خود را به اشتراک بگذارند. + کاربران می‌توانند شناسه‌ی Session خود را با رفتن به تنظیمات حساب خود و ضربه زدن به Share Session ID یا با به اشتراک گذاشتن کد QR خود‌، با دیگران به اشتراک بگذارند. - جلسه برای اسکن کدهای QR به دوربین دسترسی دارد - دسترسی به کمک دوربین + اپ Session برای اسکن کدهای QR احتیاج دارد به دوربین دسترسی داشته باشد + اجازه دسترسی به دوربین - گروه بسته شده جدید + گروه خصوصی جدید نام گروه را وارد کنید - گروه های بسته تا 10 عضو را پشتیبانی می کنند و همان محافظت از حریم خصوصی را به عنوان جلسات یک به یک ارائه می دهند. - شما هنوز هیچ تماسی ندارید - شروع جلسه - لطفاً یک نام گروه وارد کنید - لطفاً نام گروه کوتاه تری وارد کنید - لطفا حداقل 2 عضو گروه را انتخاب کنید - یک گروه بسته نمی تواند بیش از 10 عضو داشته باشد + گروه‌های خصوصی تا ۱۰ عضو را پشتیبانی می‌کنند و همان شکل از محافظت از حریم خصوصی را که در Sessionهای فرد به فرد وجود دارد، ارائه می‌دهند. + فهرست مخاطبان شما خالی است + شروع Session + لطفا یک نام گروه وارد کنید + لطفا نام گروه کوتاه‌تری وارد کنید + لطفا حداقل ۲ عضو برای گروه انتخاب کنید + یک گروه خصوصی نمی‌تواند بیش از ۱۰ عضو داشته باشد یکی از اعضای گروه شما دارای شناسه نامعتبر است به گروه باز بپیوندید امکان پیوستن به گروه نیست آدرس اینترنتی گروه را باز کنید اسکن کد QR - کد QR گروه باز را که می خواهید بپیوندید اسکن کنید + کد QR متعلق به گروه باز را که می‌خواهید به آن بپیوندید، اسکن کنید یک URL گروه باز وارد کنید - گروه های باز می توانند توسط هر کسی بپیوندند و محافظت کامل از حریم خصوصی ارائه نمی دهند تنظیمات - نام نمایشگر را وارد کنید - لطفاً نام نمایشگر را انتخاب کنید - لطفاً یک نام نمایشگر را انتخاب کنید که فقط از نویسه های Az ، AZ ، 0-9 و _ تشکیل شده باشد - لطفاً نام نمایشگر کوتاه تری انتخاب کنید + یک نام نمایشی را وارد کنید + لطفا یک نام نمایشی را انتخاب کنید + لطفا یک نام نمایشی را انتخاب کنید که فقط از اعداد و حروف Az ، AZ ، 0-9 و _ تشکیل شده باشد + لطفا یک نام نمایشی کوتاه‌تر انتخاب کنید حریم خصوصی - اطلاعیه - چت - دستگاه ها + اعلان‌ها + گفت‌وگوها + دستگاه‌ها عبارت بازیابی - اطلاعات روشن + پاک کردن اطلاعات - اطلاعیه - سبک اطلاع رسانی - محتوای اطلاع رسانی + اعلان‌ها + نحوه اطلاع‌رسانی + محتوای اعلان حریم خصوصی - چت + گفت‌وگوها - دستگاه ها - دستگاه محدود شد - در حال حاضر مجاز به پیوند بیش از یک دستگاه نیست. - دستگاه را نمی توان ارتباط برقرار کرد. - دستگاه شما با موفقیت ارتباط برقرار نشد - پیوند دستگاه امکان پذیر نیست. - شما هنوز هیچ دستگاهی را پیوند نداده اید - پیوند یک دستگاه (بتا) + دستگاه‌ها + امکان اضافه کردن دستگاه دیگری نیست + در حال حاضر اتصال بیشتر از یک دستگاه مجاز نیست. + اتصال دستگاه انجام نشد + اتصال دستگاه شما با موفقیت قطع شد + اتصال دستگاه انجام نشد + شما هنوز هیچ دستگاهی را متصل نکرده‌اید + اتصال یک دستگاه (بتا) استراتژی اعلان - از FCM استفاده کنید - با استفاده از پیام ابری فایربیس، اعلان های فشار قابل اطمینان تر امکان پذیر است ، اما نشانگر IP و دستگاه شما را در گوگل و لوکی قرار می دهد. در انتظار مجوز پیوند دستگاه مجاز است لطفاً بررسی کنید که کلمات زیر با کلمات نشان داده شده در دستگاه دیگر شما مطابقت دارند. - دستگاه شما با موفقیت پیوند خورده است + دستگاه شما با موفقیت متصل شد منتظر دستگاه - درخواست پیوند دریافت شد - پیوند دستگاه مجاز - جلسه را در دستگاه دیگر خود دانلود کرده و روی پیوند به یک حساب موجود در پایین صفحه فرود ضربه بزنید. اگر در حال حاضر دارای یک حساب کاربری در دستگاه دیگر خود هستید ، ابتدا باید آن حساب را حذف کنید. + درخواست اتصال دریافت شد + در حال مجوز صادر کردن برای اتصال دستگاه + اپ Session را در دستگاه دیگر خود دانلود کنید و روی "اتصال به یک حساب موجود" در پایین صفحه ورودی ضربه بزنید. اگر در حال حاضر دارای یک حساب کاربری در دستگاه دیگر خود هستید، ابتدا باید آن حساب را حذف کنید. لطفاً بررسی کنید که کلمات زیر با کلمات نشان داده شده در دستگاه دیگر شما مطابقت دارند. - لطفاً منتظر بمانید تا پیوند دستگاه ایجاد شود. این ممکن است تا یک دقیقه طول بکشد. + لطفاً منتظر بمانید تا اتصال دستگاه ایجاد شود. این ممکن است تا یک دقیقه طول بکشد. اجازه دهید تغییر نام - دستگاه را جدا کنید + قطع اتصال دستگاه یک نام وارد کنید عبارت بازیابی شما - این عبارت بازیابی شماست. با استفاده از آن ، می توانید شناسه جلسه خود را به دستگاه جدید بازیابی یا انتقال دهید. + این عبارت بازیابی شماست. با استفاده از آن می‌توانید شناسه‌ی Session خود را به دستگاه جدید بازیابی یا انتقال دهید. - پاک کردن همه داده ها - این به طور دائم پیام ها، جلسات و مخاطبین شما را حذف می کند. + پاک کردن همه داده‌ها + این به طور دائم پیام‌ها، جلسات و مخاطبین شما را حذف می‌کند. کد QR مشاهده کد QR من اسکن کد QR - برای شروع مکالمه با آنها ، کد QR شخصی را اسکن کنید + برای شروع مکالمه با دیگران، کد QR شخصی را اسکن کنید - این کد QR شماست. سایر کاربران می توانند برای شروع جلسه با شما آن را اسکن کنند. + این کد QR شماست. سایر کاربران می‌توانند برای شروع Session با شما آن را اسکن کنند. کد QR را به اشتراک بگذارید - تایید کنید - کاهش می یابد - %1$s برای شما درخواست جلسه ارسال کرد - شما قبول کرده اید %1$s درخواست جلسه - شما کاهش داده اید %1$s درخواست جلسه - %1$s درخواست جلسه منقضی شده است - شما ارسال کرده اید %1$s درخواست جلسه - %1$s درخواست جلسه خود را پذیرفته اید - درخواست جلسه شما به %1$s منقضی شده است - - آیا می خواهید جلسه خود را با آن بازیابی کنید %s ؟ + آیا می‌خواهید Session خود را با آن بازیابی کنید s% ؟ رد - بازگرداندن + بازیابی مخاطبین - گروه های بسته - باز کردن گروه ها + گروه‌های خصوصی + گروه‌های باز From 1a8ced90a844e50becc3cb9a4f0b1a274263d1e4 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 21 Aug 2020 12:03:40 +1000 Subject: [PATCH 4/6] Fix inverted placeholder --- res/values-fa/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 72a9e25ae7..a615bcadc5 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1387,7 +1387,7 @@ این کد QR شماست. سایر کاربران می‌توانند برای شروع Session با شما آن را اسکن کنند. کد QR را به اشتراک بگذارید - آیا می‌خواهید Session خود را با آن بازیابی کنید s% ؟ + آیا می‌خواهید Session خود را با آن بازیابی کنید %s ؟ رد بازیابی From 1a013e9a19168fd137b148f1b4ad8a14d4362bea Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 21 Aug 2020 14:23:23 +1000 Subject: [PATCH 5/6] Patch bad mac issues --- .../conversation/ConversationActivity.java | 2 +- .../securesms/jobs/PushDecryptJob.java | 25 ++++++++++++++++--- .../protocol/SessionManagementProtocol.kt | 8 ++++-- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index e6cbd46077..5beff5770f 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -446,7 +446,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity }); sessionRestoreBannerView.setOnRestore(() -> { - SessionManagementProtocol.startSessionReset(this, recipient, threadId); + SessionManagementProtocol.startSessionReset(this, recipient.getAddress().serialize()); updateSessionRestoreBanner(); return Unit.INSTANCE; }); diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index 52bfb5541f..993fb49d96 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -98,6 +98,7 @@ import org.thoughtcrime.securesms.util.Hex; import org.thoughtcrime.securesms.util.IdentityUtil; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; +import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.libsignal.loki.SessionResetProtocol; import org.whispersystems.libsignal.state.SignalProtocolStore; import org.whispersystems.libsignal.util.guava.Optional; @@ -354,14 +355,14 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } catch (ProtocolInvalidMessageException e) { Log.w(TAG, e); if (!isPushNotification) { // This can be triggered if a PN encrypted with an old session comes in after the user performed a session reset - handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId); + handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId, e); } } catch (ProtocolInvalidKeyIdException | ProtocolInvalidKeyException | ProtocolUntrustedIdentityException e) { Log.w(TAG, e); - handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId); + handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId, e); } catch (StorageFailedException e) { Log.w(TAG, e); - handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId); + handleCorruptMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId, e); } catch (ProtocolNoSessionException e) { Log.w(TAG, e); handleNoSessionMessage(e.getSender(), e.getSenderDevice(), envelope.getTimestamp(), smsMessageId); @@ -1069,7 +1070,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } private void handleCorruptMessage(@NonNull String sender, int senderDevice, long timestamp, - @NonNull Optional smsMessageId) + @NonNull Optional smsMessageId, @NonNull Throwable e) { SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context); @@ -1083,6 +1084,22 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } else { smsDatabase.markAsDecryptFailed(smsMessageId.get()); } + + // FIXME: This is a temporary patch for bad mac issues. At least with this people will be able to message again. We have to figure out the root cause of the issue though. + if (e.getCause() != null) { + Throwable e2 = e.getCause(); + if (e2.getCause() != null) { + Throwable e3 = e2.getCause(); + if (e3 instanceof InvalidMessageException) { + String message = e3.getMessage(); + if (message != null && message.startsWith("Bad Mac!")) { + SessionManagementProtocol.startSessionReset(context, sender); + return; // Don't trigger the session restoration UI + } + } + } + } + SessionManagementProtocol.triggerSessionRestorationUI(context, sender); } diff --git a/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt b/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt index fe9e07344c..c0143a3042 100644 --- a/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt +++ b/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.loki.protocol import android.content.Context +import android.os.AsyncTask import android.util.Log import org.thoughtcrime.securesms.ApplicationContext import org.thoughtcrime.securesms.crypto.IdentityKeyUtil @@ -23,15 +24,18 @@ import java.util.* object SessionManagementProtocol { @JvmStatic - fun startSessionReset(context: Context, recipient: Recipient, threadID: Long) { + fun startSessionReset(context: Context, publicKey: String) { + val recipient = recipient(context, publicKey) if (recipient.isGroupRecipient) { return } val lokiThreadDB = DatabaseFactory.getLokiThreadDatabase(context) - val smsDB = DatabaseFactory.getSmsDatabase(context) + if (lokiThreadDB.getSessionResetStatus(publicKey) != SessionResetStatus.NONE) { return } + val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient) val devices = lokiThreadDB.getSessionRestoreDevices(threadID) for (device in devices) { val endSessionMessage = OutgoingEndSessionMessage(OutgoingTextMessage(recipient, "TERMINATE", 0, -1)) MessageSender.send(context, endSessionMessage, threadID, false, null) } + val smsDB = DatabaseFactory.getSmsDatabase(context) val infoMessage = OutgoingTextMessage(recipient, "", 0, 0) val infoMessageID = smsDB.insertMessageOutbox(threadID, infoMessage, false, System.currentTimeMillis(), null) if (infoMessageID > -1) { From 457c4b75c99cd3df6c0a14c9ccef39e1132ad2fb Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 21 Aug 2020 14:24:32 +1000 Subject: [PATCH 6/6] Update version number --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index f88246e35d..66a778410b 100644 --- a/build.gradle +++ b/build.gradle @@ -185,8 +185,8 @@ dependencies { implementation "com.opencsv:opencsv:4.6" } -def canonicalVersionCode = 69 -def canonicalVersionName = "1.4.2" +def canonicalVersionCode = 70 +def canonicalVersionName = "1.4.3" def postFixSize = 10 def abiPostFix = ['armeabi-v7a' : 1,