Blame SOURCES/evolution-data-server-3.22.7-caldav-oauth2-refresh-deadlock.patch

1e20f1
diff -up evolution-data-server-3.22.7/calendar/backends/caldav/e-cal-backend-caldav.c.caldav-oauth2-refresh-deadlock evolution-data-server-3.22.7/calendar/backends/caldav/e-cal-backend-caldav.c
1e20f1
--- evolution-data-server-3.22.7/calendar/backends/caldav/e-cal-backend-caldav.c.caldav-oauth2-refresh-deadlock	2017-03-20 10:07:46.000000000 +0100
1e20f1
+++ evolution-data-server-3.22.7/calendar/backends/caldav/e-cal-backend-caldav.c	2017-04-10 10:58:07.970110715 +0200
1e20f1
@@ -362,6 +362,7 @@ caldav_ensure_bearer_auth_usage (ECalBac
1e20f1
 
1e20f1
 static gboolean
1e20f1
 caldav_setup_bearer_auth (ECalBackendCalDAV *cbdav,
1e20f1
+			  gboolean is_in_authenticate,
1e20f1
 			  ESoupAuthBearer *bearer,
1e20f1
 			  GCancellable *cancellable,
1e20f1
 			  GError **error)
1e20f1
@@ -381,7 +382,8 @@ caldav_setup_bearer_auth (ECalBackendCal
1e20f1
 
1e20f1
 	if (success) {
1e20f1
 		e_soup_auth_bearer_set_access_token (bearer, access_token, expires_in_seconds);
1e20f1
-		caldav_ensure_bearer_auth_usage (cbdav, bearer);
1e20f1
+		if (!is_in_authenticate)
1e20f1
+			caldav_ensure_bearer_auth_usage (cbdav, bearer);
1e20f1
 	}
1e20f1
 
1e20f1
 	g_free (access_token);
1e20f1
@@ -419,7 +421,7 @@ caldav_maybe_prepare_bearer_auth (ECalBa
1e20f1
 	g_free (auth_method);
1e20f1
 
1e20f1
 	if (cbdav->priv->using_bearer_auth) {
1e20f1
-		success = caldav_setup_bearer_auth (cbdav, cbdav->priv->using_bearer_auth, cancellable, error);
1e20f1
+		success = caldav_setup_bearer_auth (cbdav, FALSE, cbdav->priv->using_bearer_auth, cancellable, error);
1e20f1
 	} else {
1e20f1
 		ESourceWebdav *extension;
1e20f1
 		SoupAuth *soup_auth;
1e20f1
@@ -432,7 +434,7 @@ caldav_maybe_prepare_bearer_auth (ECalBa
1e20f1
 			E_TYPE_SOUP_AUTH_BEARER,
1e20f1
 			SOUP_AUTH_HOST, soup_uri->host, NULL);
1e20f1
 
1e20f1
-		success = caldav_setup_bearer_auth (cbdav, E_SOUP_AUTH_BEARER (soup_auth), cancellable, error);
1e20f1
+		success = caldav_setup_bearer_auth (cbdav, FALSE, E_SOUP_AUTH_BEARER (soup_auth), cancellable, error);
1e20f1
 		if (success)
1e20f1
 			cbdav->priv->using_bearer_auth = g_object_ref (soup_auth);
1e20f1
 
1e20f1
@@ -1134,7 +1136,7 @@ soup_authenticate_bearer (SoupSession *s
1e20f1
 {
1e20f1
 	GError *local_error = NULL;
1e20f1
 
1e20f1
-	caldav_setup_bearer_auth (cbdav, E_SOUP_AUTH_BEARER (auth), NULL, &local_error);
1e20f1
+	caldav_setup_bearer_auth (cbdav, TRUE, E_SOUP_AUTH_BEARER (auth), NULL, &local_error);
1e20f1
 
1e20f1
 	/* Stash the error to be picked up by caldav_credentials_required_sync().
1e20f1
 	 * There's no way to explicitly propagate a GError directly
1e20f1
@@ -1266,7 +1268,7 @@ send_and_handle_redirection (ECalBackend
1e20f1
 	    e_soup_auth_bearer_is_expired (cbdav->priv->using_bearer_auth)) {
1e20f1
 		GError *local_error = NULL;
1e20f1
 
1e20f1
-		if (!caldav_setup_bearer_auth (cbdav, cbdav->priv->using_bearer_auth, cancellable, &local_error)) {
1e20f1
+		if (!caldav_setup_bearer_auth (cbdav, FALSE, cbdav->priv->using_bearer_auth, cancellable, &local_error)) {
1e20f1
 			if (local_error) {
1e20f1
 				soup_message_set_status_full (msg, SOUP_STATUS_BAD_REQUEST, local_error->message);
1e20f1
 				g_propagate_error (error, local_error);