X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Firc%2FDccReceiver.java;h=abb018c7f78530c350380b1eb41d0ea7cbc156ef;hb=d616b16a772b4ac0c2bf8709e5f895f609581f84;hp=be4f1453aeffbfac0f8f6875d08a5c6ea6e93531;hpb=e3d5be1bb8fb742facae438ae2c36d55331e953e;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/irc/DccReceiver.java b/src/main/java/net/pterodactylus/irc/DccReceiver.java index be4f145..abb018c 100644 --- a/src/main/java/net/pterodactylus/irc/DccReceiver.java +++ b/src/main/java/net/pterodactylus/irc/DccReceiver.java @@ -176,6 +176,7 @@ public class DccReceiver extends AbstractExecutionThreadService { Socket socket = null; try { socket = new Socket(inetAddress, port); + socket.setSoTimeout((int) TimeUnit.MINUTES.toMillis(3)); InputStream socketInputStream = socket.getInputStream(); inputStream = new BandwidthCountingInputStream(socketInputStream, 5, TimeUnit.SECONDS); byte[] buffer = new byte[65536]; @@ -189,7 +190,11 @@ public class DccReceiver extends AbstractExecutionThreadService { progress += r; } outputStream.flush(); - eventBus.post(new DccDownloadFinished(this)); + if ((size == -1) || (progress == size)) { + eventBus.post(new DccDownloadFinished(this)); + } else { + eventBus.post(new DccDownloadFailed(this, new IOException("Download aborted."))); + } } catch (IOException ioe1) { logger.log(Level.WARNING, "I/O error while receiving DCC!", ioe1); eventBus.post(new DccDownloadFailed(this, ioe1));