diff --git a/source/net/filebot/CachedResource2.java b/source/net/filebot/CachedResource2.java index 6afb9cfa..c780bd89 100644 --- a/source/net/filebot/CachedResource2.java +++ b/source/net/filebot/CachedResource2.java @@ -184,7 +184,11 @@ public class CachedResource2 implements Resource { try { debug.fine(WebRequest.log(url, lastModified, etagValue)); - return WebRequest.fetch(url, lastModified, etagValue, null, responseHeaders); + if (etagValue != null) { + return WebRequest.fetchIfNoneMatch(url, etagValue); + } else { + return WebRequest.fetchIfModified(url, lastModified); + } } catch (FileNotFoundException e) { return fileNotFound(url, e); } finally { diff --git a/source/net/filebot/web/WebRequest.java b/source/net/filebot/web/WebRequest.java index 9fddd354..f90b6c52 100644 --- a/source/net/filebot/web/WebRequest.java +++ b/source/net/filebot/web/WebRequest.java @@ -121,7 +121,7 @@ public final class WebRequest { if (ifModifiedSince > 0) { connection.setIfModifiedSince(ifModifiedSince); } else if (etag != null) { - // If-Modified-Since must not be set if If-None-Match is set + // If-Modified-Since must not be set if If-None-Match is set and vice versa connection.addRequestProperty("If-None-Match", etag.toString()); } @@ -319,12 +319,12 @@ public final class WebRequest { public static Supplier log(URL url, long lastModified, Object etag) { return () -> { List headers = new ArrayList(2); - if (lastModified > 0) { - headers.add("If-Modified-Since: " + DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.ofInstant(Instant.ofEpochMilli(lastModified), ZoneOffset.UTC))); - } if (etag != null) { headers.add("If-None-Match: " + etag); } + if (lastModified > 0) { + headers.add("If-Modified-Since: " + DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.ofInstant(Instant.ofEpochMilli(lastModified), ZoneOffset.UTC))); + } return "Fetch resource: " + url + (headers.isEmpty() ? "" : " " + headers); }; }