diff --git a/src/com/owncloud/android/lib/common/OwnCloudClient.java b/src/com/owncloud/android/lib/common/OwnCloudClient.java index 3dd193af..8e1f8cc4 100644 --- a/src/com/owncloud/android/lib/common/OwnCloudClient.java +++ b/src/com/owncloud/android/lib/common/OwnCloudClient.java @@ -29,7 +29,6 @@ import android.accounts.AccountManager; import android.accounts.AccountsException; import android.net.Uri; -import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.common.authentication.OwnCloudCredentials; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials; @@ -116,22 +115,16 @@ public class OwnCloudClient extends HttpClient { } public int executeHttpMethod (HttpBaseMethod method) throws Exception { - boolean repeatWithFreshCredentials; int repeatCounter = 0; int status; do { - // Clean previous request id. This is a bit hacky but is the only way to add request headers in WebDAV - // methods by using Dav4Android - deleteHeaderForAllRequests(OC_X_REQUEST_ID); - - // Header to allow tracing requests in apache and ownCloud logs - addHeaderForAllRequests(OC_X_REQUEST_ID, - RandomUtils.generateRandomString(RandomUtils.generateRandomInteger(20, 200))); + setRequestId(method); status = method.execute(); checkFirstRedirection(method); + if(mFollowRedirects && !isIdPRedirection()) { status = followRedirection(method).getLastStatus(); } @@ -158,6 +151,8 @@ public class OwnCloudClient extends HttpClient { int status; do { + setRequestId(method); + status = method.execute(); repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter); @@ -169,6 +164,19 @@ public class OwnCloudClient extends HttpClient { return status; } + private void setRequestId(HttpBaseMethod method) { + // Clean previous request id. This is a bit hacky but is the only way to add request headers in WebDAV + // methods by using Dav4Android + deleteHeaderForAllRequests(OC_X_REQUEST_ID); + + String requestId = RandomUtils.generateRandomUUID(); + + // Header to allow tracing requests in apache and ownCloud logs + addHeaderForAllRequests(OC_X_REQUEST_ID, RandomUtils.generateRandomUUID()); + + Log_OC.d(TAG, "Executing " + method.getClass().getSimpleName() + " in request with id " + requestId); + } + public RedirectionPath followRedirection(HttpBaseMethod method) throws Exception { int redirectionsCount = 0; int status = method.getStatusCode(); diff --git a/src/com/owncloud/android/lib/common/utils/RandomUtils.java b/src/com/owncloud/android/lib/common/utils/RandomUtils.java index 6c043aae..ab13dc5a 100644 --- a/src/com/owncloud/android/lib/common/utils/RandomUtils.java +++ b/src/com/owncloud/android/lib/common/utils/RandomUtils.java @@ -25,6 +25,7 @@ package com.owncloud.android.lib.common.utils; import java.util.Random; +import java.util.UUID; /** * Class with methods to generate random values @@ -60,4 +61,11 @@ public class RandomUtils { Random r = new Random(); return r.nextInt(max-min) + min; } + + /** + * @return random UUID + */ + public static String generateRandomUUID() { + return UUID.randomUUID().toString(); + } } \ No newline at end of file