From 6eb830ba7aa8465d872a9ef0a8d87592c978e292 Mon Sep 17 00:00:00 2001 From: MovTery <123115192+MovTery@users.noreply.github.com> Date: Sat, 19 Apr 2025 02:56:13 +0800 Subject: [PATCH] Fix(DownloadUtils): Set Read Timeout Duration (#6504) * Fix[DownloadUtils]: Set Read Timeout Duration Pojav has not set a timeout for downloading files, which results in situations where file downloads do not throw an exception or terminate even after timing out. * Update DownloadUtils.java --- .../java/net/kdt/pojavlaunch/utils/DownloadUtils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DownloadUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DownloadUtils.java index dbdbadaf0..0c4d35eed 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DownloadUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/DownloadUtils.java @@ -15,6 +15,7 @@ import org.apache.commons.io.*; @SuppressWarnings("IOStreamConstructor") public class DownloadUtils { public static final String USER_AGENT = Tools.APP_NAME; + private static final int TIME_OUT = 10000; public static void download(String url, OutputStream os) throws IOException { download(new URL(url), os); @@ -26,7 +27,8 @@ public class DownloadUtils { // System.out.println("Connecting: " + url.toString()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", USER_AGENT); - conn.setConnectTimeout(10000); + conn.setConnectTimeout(TIME_OUT); + conn.setReadTimeout(TIME_OUT); conn.setDoInput(true); conn.connect(); if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) { @@ -67,6 +69,8 @@ public class DownloadUtils { FileUtils.ensureParentDirectory(outputFile); HttpURLConnection conn = (HttpURLConnection) new URL(urlInput).openConnection(); + conn.setConnectTimeout(TIME_OUT); + conn.setReadTimeout(TIME_OUT); InputStream readStr = conn.getInputStream(); try (FileOutputStream fos = new FileOutputStream(outputFile)) { int current; @@ -81,8 +85,9 @@ public class DownloadUtils { monitor.updateProgress(overall, length); } conn.disconnect(); + } catch (IOException e) { + throw new IOException("Unable to download from " + urlInput, e); } - } public static T downloadStringCached(String url, String cacheName, ParseCallback parseCallback) throws IOException, ParseException{