diff --git a/ts3-client/core/src/main/java/com/ts3client/net/filetransfer/FileTransferManager.java b/ts3-client/core/src/main/java/com/ts3client/net/filetransfer/FileTransferManager.java index 2f121cd..41157aa 100644 --- a/ts3-client/core/src/main/java/com/ts3client/net/filetransfer/FileTransferManager.java +++ b/ts3-client/core/src/main/java/com/ts3client/net/filetransfer/FileTransferManager.java @@ -46,6 +46,8 @@ import java.util.function.Supplier; public final class FileTransferManager { private static final int CONNECT_TIMEOUT_MS = 15_000; + /** How long a download may go without receiving anything before it counts as failed. */ + private static final int STALL_TIMEOUT_MS = 30_000; private static final int BUFFER_SIZE = 64 * 1024; /** How long to wait for the server's {@code notifystart*} reply after an {@code ftinit*}. */ private static final long NEGOTIATE_TIMEOUT_MS = 15_000; @@ -406,6 +408,7 @@ public final class FileTransferManager { Socket socket = new Socket(); socket.connect(new InetSocketAddress(resolveHost(params.getFileServerHost()), params.getFileServerPort()), CONNECT_TIMEOUT_MS); + socket.setSoTimeout(STALL_TIMEOUT_MS); return socket; }