diff --git a/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy b/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy index ef33e8fd..d8836332 100644 --- a/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy +++ b/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy @@ -38,8 +38,8 @@ class ContentUploader extends Uploader { if (range.start >= length || range.end >= length) satisfiable = false if (satisfiable) { - int startPiece = length / range.start - int endPiece = length / range.end + int startPiece = range.start / (0x1 << pieceSize) + int endPiece = range.end / (0x1 << pieceSize) for (int i = startPiece; i < endPiece; i++) satisfiable &= mesh.pieces.isDownloaded(i) } diff --git a/core/src/main/groovy/com/muwire/core/upload/UploadManager.groovy b/core/src/main/groovy/com/muwire/core/upload/UploadManager.groovy index c73cf988..d4758e37 100644 --- a/core/src/main/groovy/com/muwire/core/upload/UploadManager.groovy +++ b/core/src/main/groovy/com/muwire/core/upload/UploadManager.groovy @@ -85,16 +85,19 @@ public class UploadManager { Mesh mesh File file + int pieceSize if (downloader != null) { mesh = meshManager.get(infoHash) file = downloader.incompleteFile + pieceSize = downloader.pieceSizePow2 } else { SharedFile sharedFile = sharedFiles.iterator().next(); mesh = meshManager.getOrCreate(request.infoHash, sharedFile.NPieces) file = sharedFile.file + pieceSize = sharedFile.pieceSize } - Uploader uploader = new ContentUploader(file, request, e, mesh) + Uploader uploader = new ContentUploader(file, request, e, mesh, pieceSize) eventBus.publish(new UploadEvent(uploader : uploader)) try { uploader.respond() @@ -207,16 +210,19 @@ public class UploadManager { Mesh mesh File file + int pieceSize if (downloader != null) { mesh = meshManager.get(infoHash) file = downloader.incompleteFile + pieceSize = downloader.pieceSizePow2 } else { SharedFile sharedFile = sharedFiles.iterator().next(); mesh = meshManager.getOrCreate(request.infoHash, sharedFile.NPieces) file = sharedFile.file + pieceSize = sharedFile.pieceSize } - uploader = new ContentUploader(file, request, e, mesh) + uploader = new ContentUploader(file, request, e, mesh, pieceSize) eventBus.publish(new UploadEvent(uploader : uploader)) try { uploader.respond()