Prevent double count of transfer progress when part of an upload is resend
[pub/Android/ownCloud.git] / src / eu / alefzero / webdav / ChunkFromFileChannelRequestEntity.java
index 3f45396..21f82d9 100644 (file)
@@ -120,11 +120,15 @@ public class ChunkFromFileChannelRequestEntity implements RequestEntity, Progres
             mChannel.position(mOffset);
             long size = mFile.length();
             if (size == 0) size = -1;
             mChannel.position(mOffset);
             long size = mFile.length();
             if (size == 0) size = -1;
-            while (mChannel.position() < mOffset + mChunkSize && mChannel.position() < mChannel.size()) {
+            long maxCount = Math.min(mOffset + mChunkSize, mChannel.size());
+            while (mChannel.position() < maxCount) {
                 readCount = mChannel.read(mBuffer);
                 out.write(mBuffer.array(), 0, readCount);
                 mBuffer.clear();
                 readCount = mChannel.read(mBuffer);
                 out.write(mBuffer.array(), 0, readCount);
                 mBuffer.clear();
-                mTransferred += readCount;
+                if (mTransferred < maxCount) {  // condition to avoid accumulate progress for repeated chunks
+                    Log_OC.d(TAG, "aƱadiendo a mTransfered " + mTransferred + " readCount " + readCount + " hasta " + (mTransferred + readCount));
+                    mTransferred += readCount;
+                }
                 synchronized (mDataTransferListeners) {
                     it = mDataTransferListeners.iterator();
                     while (it.hasNext()) {
                 synchronized (mDataTransferListeners) {
                     it = mDataTransferListeners.iterator();
                     while (it.hasNext()) {