[evolution-data-server] Bug 761450 - CalDAV fails to recognize "Daily Limit Exceeded" error from Google/GOA
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 761450 - CalDAV fails to recognize "Daily Limit Exceeded" error from Google/GOA
- Date: Wed, 24 Aug 2016 15:50:13 +0000 (UTC)
commit 24b3f04e2ab11a20415ddfb6b5fa2522b6b17cbc
Author: Milan Crha <mcrha redhat com>
Date: Wed Aug 24 17:49:22 2016 +0200
Bug 761450 - CalDAV fails to recognize "Daily Limit Exceeded" error from Google/GOA
calendar/backends/caldav/e-cal-backend-caldav.c | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/calendar/backends/caldav/e-cal-backend-caldav.c b/calendar/backends/caldav/e-cal-backend-caldav.c
index 94e2cce..164d918 100644
--- a/calendar/backends/caldav/e-cal-backend-caldav.c
+++ b/calendar/backends/caldav/e-cal-backend-caldav.c
@@ -404,6 +404,8 @@ caldav_maybe_prepare_bearer_auth (ECalBackendCalDAV *cbdav,
success = caldav_setup_bearer_auth (cbdav, E_SOUP_AUTH_BEARER (soup_auth), cancellable, error);
if (success) {
+ cbdav->priv->using_bearer_auth = TRUE;
+
soup_auth_manager_use_auth (
SOUP_AUTH_MANAGER (feature),
soup_uri, soup_auth);
@@ -690,7 +692,24 @@ status_code_to_result (SoupMessage *message,
break;
case SOUP_STATUS_FORBIDDEN:
- g_propagate_error (perror, EDC_ERROR (AuthenticationRequired));
+ if (cbdav->priv->using_bearer_auth && message->response_body &&
+ message->response_body->data && message->response_body->length) {
+ gchar *body = g_strndup (message->response_body->data,
message->response_body->length);
+
+ /* Do not localize this string, it is returned by the server. */
+ if (body && (e_util_strstrcase (body, "Daily Limit Exceeded") ||
+ e_util_strstrcase (body, "https://console.developers.google.com/"))) {
+ /* Special-case this condition and provide this error up to the UI. */
+ g_propagate_error (perror,
+ e_data_cal_create_error_fmt (OtherError, _("Failed to login to the
server: %s"), body));
+ } else {
+ g_propagate_error (perror, EDC_ERROR (AuthenticationRequired));
+ }
+
+ g_free (body);
+ } else {
+ g_propagate_error (perror, EDC_ERROR (AuthenticationRequired));
+ }
break;
case SOUP_STATUS_UNAUTHORIZED:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]