From d741b6ff66cf3d394079d2c4c9109729f59dcfbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sun, 19 May 2024 17:58:40 +0100 Subject: [PATCH] Garmin: Ignore agps request if etag matches Some watches reboot on http 304 --- .../service/devices/garmin/agps/AgpsHandler.java | 5 +++-- .../service/devices/garmin/http/HttpHandler.java | 4 +++- .../service/devices/garmin/http/WeatherHandler.java | 4 +--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java index 06f1ef23a..b4c4010e2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/agps/AgpsHandler.java @@ -62,8 +62,9 @@ public class AgpsHandler { LOG.debug("agps request hash = {}, file hash = {}", ifNoneMatch, etag); if (etag.equals(ifNoneMatch)) { - response.setStatus(304); - return response; + // FIXME: the 304 reboots some watches, so just ignore the request if the hash matches + //response.setStatus(304); + return null; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/HttpHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/HttpHandler.java index 92e81be1a..ff933511a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/HttpHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/HttpHandler.java @@ -63,7 +63,9 @@ public class HttpHandler { } if (response == null) { - return null; + return GdiHttpService.HttpService.RawResponse.newBuilder() + .setStatus(GdiHttpService.HttpService.Status.UNKNOWN_STATUS) + .build(); } LOG.debug("Http response status={}", response.getStatus()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/WeatherHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/WeatherHandler.java index a55a9011f..963a3f40e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/WeatherHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/http/WeatherHandler.java @@ -87,9 +87,7 @@ public class WeatherHandler { } default: LOG.warn("Unknown weather path {}", path); - final GarminHttpResponse response = new GarminHttpResponse(); - response.setStatus(404); - return response; + return null; } final String json = GSON.toJson(weatherData);