Fixed that small todo: Set KeepAlive based on the response code
authorLennart Rosam <lennart@familie-rosam.de>
Wed, 11 Apr 2012 20:39:24 +0000 (22:39 +0200)
committerLennart Rosam <lennart@familie-rosam.de>
Wed, 11 Apr 2012 20:39:24 +0000 (22:39 +0200)
src/eu/alefzero/owncloud/syncadapter/AbstractOwnCloudSyncAdapter.java

index b06ac53..73e41d2 100644 (file)
@@ -39,22 +39,20 @@ import android.accounts.AuthenticatorException;
 import android.accounts.OperationCanceledException;\r
 import android.content.AbstractThreadedSyncAdapter;\r
 import android.content.ContentProviderClient;\r
-import android.content.ContentResolver;\r
 import android.content.Context;\r
 import android.net.Uri;\r
 import android.text.TextUtils;\r
-import android.util.Log;\r
 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
 import eu.alefzero.owncloud.datamodel.OCFile;\r
 import eu.alefzero.webdav.HttpPropFind;\r
 import eu.alefzero.webdav.TreeNode;\r
+import eu.alefzero.webdav.TreeNode.NodeProperty;\r
 import eu.alefzero.webdav.WebdavClient;\r
 import eu.alefzero.webdav.WebdavUtils;\r
-import eu.alefzero.webdav.TreeNode.NodeProperty;\r
 
 /**
  * Base SyncAdapter for OwnCloud
- * Designed to be subclassed for the concreete SyncAdapter, like ConcatsSync, CalendarSync, FileSync etc..
+ * Designed to be subclassed for the concrete SyncAdapter, like ConcatsSync, CalendarSync, FileSync etc..
  * 
  * @author sassman
  *
@@ -109,9 +107,19 @@ public abstract class AbstractOwnCloudSyncAdapter extends AbstractThreadedSyncAd
        protected ConnectionKeepAliveStrategy getKeepAliveStrategy() {
                return new ConnectionKeepAliveStrategy() {
                        public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
-                               // TODO: change keep alive straategy basing on response: ie forbidden/not found/etc
+                               // Change keep alive straategy basing on response: ie forbidden/not found/etc
                                // should have keep alive 0
-                               // default return: 5s
+                               // default return: 5s\r
+                               int statusCode = response.getStatusLine().getStatusCode();\r
+                               \r
+                               // HTTP 400, 500 Errors as well as HTTP 118 - Connection timed out\r
+                               if((statusCode >= 400 && statusCode <= 418) || \r
+                                               (statusCode >= 421 && statusCode <= 426) ||\r
+                                               (statusCode >= 500 && statusCode <= 510 ) ||\r
+                                               statusCode == 118) {\r
+                                       return 0;\r
+                               }\r
+                               
                                return 5 * 1000;
                        }
                };