aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud/onedrive/onedrivetokenrefresher.cpp
diff options
context:
space:
mode:
authorAlexander Tkachev2016-05-30 22:18:33 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit001b417f33beeb3b2da11f58105b971dc7e6f600 (patch)
tree25d651f462b2132ca1ffe9a84df76bbd3349d244 /backends/cloud/onedrive/onedrivetokenrefresher.cpp
parentaf37ecca3430c871ec8a03bcada90303e6bf9877 (diff)
downloadscummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.tar.gz
scummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.tar.bz2
scummvm-rg350-001b417f33beeb3b2da11f58105b971dc7e6f600.zip
CLOUD: Fix OneDriveTokenRefresher
It was calling finish(), causing stack overflow. Some minor changes are added also.
Diffstat (limited to 'backends/cloud/onedrive/onedrivetokenrefresher.cpp')
-rw-r--r--backends/cloud/onedrive/onedrivetokenrefresher.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/backends/cloud/onedrive/onedrivetokenrefresher.cpp b/backends/cloud/onedrive/onedrivetokenrefresher.cpp
index d932f9ab17..a0c41ff471 100644
--- a/backends/cloud/onedrive/onedrivetokenrefresher.cpp
+++ b/backends/cloud/onedrive/onedrivetokenrefresher.cpp
@@ -60,7 +60,7 @@ void OneDriveTokenRefresher::finishJson(Common::JSONValue *json) {
if (!json) {
//notify user of failure
warning("OneDriveTokenRefresher: got NULL instead of JSON");
- CurlJsonRequest::finish();
+ CurlJsonRequest::finishJson(nullptr);
return;
}
@@ -72,8 +72,24 @@ void OneDriveTokenRefresher::finishJson(Common::JSONValue *json) {
}
Common::JSONObject error = result.getVal("error")->asObject();
- debug("code = %s", error.getVal("code")->asString().c_str());
- debug("message = %s", error.getVal("message")->asString().c_str());
+ bool irrecoverable = true;
+
+ if (error.contains("code")) {
+ Common::String code = error.getVal("code")->asString();
+ debug("code = %s", code.c_str());
+ //if (code == "itemNotFound") irrecoverable = true;
+ }
+
+ if (error.contains("message")) {
+ Common::String message = error.getVal("message")->asString();
+ debug("message = %s", message.c_str());
+ }
+
+ if (irrecoverable) {
+ CurlJsonRequest::finishJson(nullptr);
+ return;
+ }
+
pause();
delete json;
_parentStorage->getAccessToken(new Common::Callback<OneDriveTokenRefresher, Storage::BoolResponse>(this, &OneDriveTokenRefresher::tokenRefreshed));