From a784e2f2d977b2e8da12b5c6c1b358d325c24929 Mon Sep 17 00:00:00 2001
From: Matthias Urhahn <matthias.urhahn@sap.com>
Date: Mon, 30 Nov 2020 16:43:40 +0100
Subject: [PATCH] Don't bubble up exceptions on day sync caused by no internet.
 (#1754)

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
---
 .../diagnosiskeys/download/DayPackageSyncTool.kt      | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DayPackageSyncTool.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DayPackageSyncTool.kt
index 9474d942d..586d8a951 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DayPackageSyncTool.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DayPackageSyncTool.kt
@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.diagnosiskeys.server.LocationCode
 import de.rki.coronawarnapp.diagnosiskeys.storage.CachedKey
 import de.rki.coronawarnapp.diagnosiskeys.storage.CachedKeyInfo.Type
 import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository
+import de.rki.coronawarnapp.exception.http.CwaUnknownHostException
 import de.rki.coronawarnapp.storage.DeviceStorage
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.toLocalDate
 import de.rki.coronawarnapp.util.TimeStamper
@@ -46,9 +47,15 @@ class DayPackageSyncTool @Inject constructor(
         val downloadConfig: KeyDownloadConfig = configProvider.getAppConfig()
         val keysWereRevoked = revokeCachedKeys(downloadConfig.revokedDayPackages)
 
-        val missingDays = targetLocations.mapNotNull {
-            determineMissingDayPackages(it, forceIndexLookup || keysWereRevoked)
+        val missingDays = try {
+            targetLocations.mapNotNull {
+                determineMissingDayPackages(it, forceIndexLookup || keysWereRevoked)
+            }
+        } catch (e: CwaUnknownHostException) {
+            Timber.tag(TAG).w(e, "Failed to sync with day index.")
+            return SyncResult(successful = false, newPackages = emptyList())
         }
+
         if (missingDays.isEmpty()) {
             Timber.tag(TAG).i("There were no missing day packages.")
             return SyncResult(successful = true, newPackages = emptyList())
-- 
GitLab