[Pkg-owncloud-commits] [owncloud-client] 04/26: Make unblacklisting depending on Up or Download

Sandro Knauß hefee-guest at moszumanska.debian.org
Mon Dec 9 00:01:56 UTC 2013


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit c03b2bbc8710cf39477a429b52f9778c2757edf8
Author: Klaas Freitag <freitag at owncloud.com>
Date:   Fri Nov 29 16:15:26 2013 +0100

    Make unblacklisting depending on Up or Download
    
    Compare modtime in case of uploading and ETag in case of downloading
    as they are the correct indicators.
---
 src/mirall/csyncthread.cpp | 49 +++++++++++++++++++++++++++-------------------
 1 file changed, 29 insertions(+), 20 deletions(-)

diff --git a/src/mirall/csyncthread.cpp b/src/mirall/csyncthread.cpp
index 27ad297..99ca1d0 100644
--- a/src/mirall/csyncthread.cpp
+++ b/src/mirall/csyncthread.cpp
@@ -199,31 +199,41 @@ bool CSyncThread::checkBlacklisting( SyncFileItem *item )
     // if there is a valid entry in the blacklist table and the retry count is
     // already null or smaller than 0, the file is blacklisted.
     if( entry.isValid() ) {
+        item->_blacklistedInDb = true;
+
         if( entry._retryCount <= 0 ) {
             re = true;
-            item->_blacklistedInDb = true;
         }
 
-        // if the retryCount is 0, but the etag has changed, it is tried again
+        // if the retryCount is 0, but the etag for downloads or the mtime for uploads
+        // has changed, it is tried again
         // note that if the retryCount is -1 we never try again.
         if( entry._retryCount == 0 ) {
-            if( item->_etag.isEmpty() || entry._lastTryEtag.isEmpty() ) {
-                // compare the mtimes.
-                if(entry._lastTryModtime != item->_modtime) {
+            if( item->_dir == SyncFileItem::Up ) { // check the modtime
+                if(item->_modtime == 0 || entry._lastTryModtime == 0) {
                     re = false;
-                    qDebug() << item->_file << " is blacklisted, but has changed mtime!";
-
+                } else {
+                    if( item->_modtime != entry._lastTryModtime ) {
+                        re = false;
+                        qDebug() << item->_file << " is blacklisted, but has changed mtime!";
+                    }
                 }
             } else {
-                if( entry._lastTryEtag != item->_etag) {
-                    re = false;
-                    qDebug() << item->_file << " is blacklisted, but has changed etag!";
+                // download, check the etag.
+                if( item->_etag.isEmpty() || entry._lastTryEtag.isEmpty() ) {
+                    qDebug() << item->_file << "one ETag is empty, no blacklisting";
+                    return false;
+                } else {
+                    if( item->_etag != entry._lastTryEtag ) {
+                        re = false;
+                        qDebug() << item->_file << " is blacklisted, but has changed etag!";
+                    }
                 }
             }
         }
+
         if( re ) {
             qDebug() << "Item is on blacklist: " << entry._file << "retries:" << entry._retryCount;
-            item->_blacklistedInDb = true;
             item->_instruction = CSYNC_INSTRUCTION_IGNORE;
             item->_errorString = tr("The item is not synced because it is on the blacklist.");
             slotProgress( Progress::SoftError, *item );
@@ -270,15 +280,6 @@ int CSyncThread::treewalkFile( TREE_WALK_FILE *file, bool remote )
 
     int re = 0;
 
-    // check for blacklisting of this item.
-    // if the item is on blacklist, the instruction was set to IGNORE
-    checkBlacklisting( &item );
-
-    if (file->instruction != CSYNC_INSTRUCTION_IGNORE
-        && file->instruction != CSYNC_INSTRUCTION_REMOVE) {
-      _hasFiles = true;
-    }
-
     switch(file->instruction) {
     case CSYNC_INSTRUCTION_NONE:
         break;
@@ -349,6 +350,14 @@ int CSyncThread::treewalkFile( TREE_WALK_FILE *file, bool remote )
     }
 
     item._dir = dir;
+    // check for blacklisting of this item.
+    // if the item is on blacklist, the instruction was set to IGNORE
+    checkBlacklisting( &item );
+
+    if (file->instruction != CSYNC_INSTRUCTION_IGNORE
+        && file->instruction != CSYNC_INSTRUCTION_REMOVE) {
+      _hasFiles = true;
+    }
     _syncedItems.append(item);
 
     return re;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list