From a6c488812c006189217a2be9b9eb76bafe5ee7cd Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 6 Mar 2016 15:00:16 +0100 Subject: [PATCH] Add back support for partial downloads Broken when adding support for not-found caching --- cache/src/main/scala/coursier/Cache.scala | 38 +++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 45cf320a0..b17577b7d 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -386,27 +386,27 @@ object Cache { val conn0 = urlConn(url) - if (is404(conn0)) + val (partialDownload, conn) = conn0 match { + case conn0: HttpURLConnection if alreadyDownloaded > 0L => + conn0.setRequestProperty("Range", s"bytes=$alreadyDownloaded-") + + if (conn0.getResponseCode == partialContentResponseCode) { + val ackRange = Option(conn0.getHeaderField("Content-Range")).getOrElse("") + + if (ackRange.startsWith(s"bytes $alreadyDownloaded-")) + (true, conn0) + else + // unrecognized Content-Range header -> start a new connection with no resume + (false, urlConn(url)) + } else + (false, conn0) + + case _ => (false, conn0) + } + + if (is404(conn)) FileError.NotFound(url, permanent = Some(true)).left else { - val (partialDownload, conn) = conn0 match { - case conn0: HttpURLConnection if alreadyDownloaded > 0L => - conn0.setRequestProperty("Range", s"bytes=$alreadyDownloaded-") - - if (conn0.getResponseCode == partialContentResponseCode) { - val ackRange = Option(conn0.getHeaderField("Content-Range")).getOrElse("") - - if (ackRange.startsWith(s"bytes $alreadyDownloaded-")) - (true, conn0) - else - // unrecognized Content-Range header -> start a new connection with no resume - (false, urlConn(url)) - } else - (false, conn0) - - case _ => (false, conn0) - } - for (len0 <- Option(conn.getContentLengthLong) if len0 >= 0L) { val len = len0 + (if (partialDownload) alreadyDownloaded else 0L) logger.foreach(_.downloadLength(url, len, alreadyDownloaded))