diff -pruN 3.44.3-2/CMakeLists.txt 3.44.4-1/CMakeLists.txt
--- 3.44.3-2/CMakeLists.txt	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/CMakeLists.txt	2022-08-05 07:45:35.000000000 +0000
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.1)
 cmake_policy(VERSION 3.1)
 
 project(evolution-data-server
-	VERSION 3.44.3
+	VERSION 3.44.4
 	LANGUAGES C CXX)
 set(CMAKE_CXX_STANDARD 14)
 set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-data-server/issues/")
diff -pruN 3.44.3-2/debian/changelog 3.44.4-1/debian/changelog
--- 3.44.3-2/debian/changelog	2022-07-25 21:03:36.000000000 +0000
+++ 3.44.4-1/debian/changelog	2022-08-05 11:13:11.000000000 +0000
@@ -1,3 +1,10 @@
+evolution-data-server (3.44.4-1) unstable; urgency=medium
+
+  * New upstream release
+  * Drop glib patch: applied in new release
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Fri, 05 Aug 2022 07:13:11 -0400
+
 evolution-data-server (3.44.3-2) unstable; urgency=medium
 
   * Team upload
diff -pruN 3.44.3-2/debian/patches/Check-for-non-zero-value-passed-to-g_flags_get_first_valu.patch 3.44.4-1/debian/patches/Check-for-non-zero-value-passed-to-g_flags_get_first_valu.patch
--- 3.44.3-2/debian/patches/Check-for-non-zero-value-passed-to-g_flags_get_first_valu.patch	2022-07-25 21:03:36.000000000 +0000
+++ 3.44.4-1/debian/patches/Check-for-non-zero-value-passed-to-g_flags_get_first_valu.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,71 +0,0 @@
-From: Milan Crha <mcrha@redhat.com>
-Date: Mon, 18 Jul 2022 10:09:12 +0200
-Subject: Check for non-zero value passed to g_flags_get_first_value()
-
-When the value is zero, the flag removal does not do anything, which
-leads to an infinite loop.
-
-It is related to a GLib change:
-https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2576
-
-This had been reported downstream:
-https://bugzilla.redhat.com/show_bug.cgi?id=2107751
-
-Origin: upstream, 3.44.4, commit:ede95546305a8bb7e7213c247132f07ca9074e25
-Bug-Debian: https://bugs.debian.org/1015181
----
- src/calendar/libecal/e-cal-client.c | 12 ++++++------
- src/libedataserver/e-source.c       |  2 +-
- 2 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/calendar/libecal/e-cal-client.c b/src/calendar/libecal/e-cal-client.c
-index a861c27..d49a50a 100644
---- a/src/calendar/libecal/e-cal-client.c
-+++ b/src/calendar/libecal/e-cal-client.c
-@@ -5187,13 +5187,13 @@ e_cal_client_modify_objects_sync (ECalClient *client,
- 
- 	mod_flags = g_string_new (NULL);
- 	flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
--	flags_value = g_flags_get_first_value (flags_class, mod);
--	while (flags_value != NULL) {
-+	for (flags_value = g_flags_get_first_value (flags_class, mod);
-+	     flags_value && mod;
-+	     flags_value = g_flags_get_first_value (flags_class, mod)) {
- 		if (mod_flags->len > 0)
- 			g_string_append_c (mod_flags, ':');
- 		g_string_append (mod_flags, flags_value->value_nick);
- 		mod &= ~flags_value->value;
--		flags_value = g_flags_get_first_value (flags_class, mod);
- 	}
- 
- 	strv = g_new0 (gchar *, g_slist_length (icalcomps) + 1);
-@@ -5549,13 +5549,13 @@ e_cal_client_remove_objects_sync (ECalClient *client,
- 
- 	mod_flags = g_string_new (NULL);
- 	flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
--	flags_value = g_flags_get_first_value (flags_class, mod);
--	while (flags_value != NULL) {
-+	for (flags_value = g_flags_get_first_value (flags_class, mod);
-+	     flags_value && mod;
-+	     flags_value = g_flags_get_first_value (flags_class, mod)) {
- 		if (mod_flags->len > 0)
- 			g_string_append_c (mod_flags, ':');
- 		g_string_append (mod_flags, flags_value->value_nick);
- 		mod &= ~flags_value->value;
--		flags_value = g_flags_get_first_value (flags_class, mod);
- 	}
- 
- 	g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
-diff --git a/src/libedataserver/e-source.c b/src/libedataserver/e-source.c
-index 31d851e..23b82f7 100644
---- a/src/libedataserver/e-source.c
-+++ b/src/libedataserver/e-source.c
-@@ -4622,7 +4622,7 @@ e_source_invoke_credentials_required_sync (ESource *source,
- 
- 	flags_class = g_type_class_ref (G_TYPE_TLS_CERTIFICATE_FLAGS);
- 	for (flags_value = g_flags_get_first_value (flags_class, certificate_errors);
--	     flags_value;
-+	     flags_value && certificate_errors;
- 	     flags_value = g_flags_get_first_value (flags_class, certificate_errors)) {
- 		if (certificate_errors_str->len)
- 			g_string_append_c (certificate_errors_str, ':');
diff -pruN 3.44.3-2/debian/patches/series 3.44.4-1/debian/patches/series
--- 3.44.3-2/debian/patches/series	2022-07-25 21:03:36.000000000 +0000
+++ 3.44.4-1/debian/patches/series	2022-08-05 11:13:11.000000000 +0000
@@ -1,3 +1,2 @@
-Check-for-non-zero-value-passed-to-g_flags_get_first_valu.patch
 01-noinst-libedbus-private.patch
 ubuntu_gettext_domain.patch
diff -pruN 3.44.3-2/NEWS 3.44.4-1/NEWS
--- 3.44.3-2/NEWS	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/NEWS	2022-08-05 07:45:35.000000000 +0000
@@ -1,3 +1,15 @@
+Evolution-Data-Server 3.44.4 2022-08-05
+---------------------------------------
+
+Bug Fixes:
+	I#407 - IMAPx: Unsubscribed folder always removed from the UI
+
+Miscellaneous:
+	ESoupAuthBearer: Check for token expiration in e_soup_auth_bearer_is_authenticated()
+	ESoupSession: Avoid downgrade of Bearer (OAuth2) auth for authentication
+	Check for non-zero value passed to g_flags_get_first_value()
+	alarm-notify: Use themed icon instead of file icon for notifications
+
 Evolution-Data-Server 3.44.3 2022-07-01
 ---------------------------------------
 
diff -pruN 3.44.3-2/src/calendar/libecal/e-cal-client.c 3.44.4-1/src/calendar/libecal/e-cal-client.c
--- 3.44.3-2/src/calendar/libecal/e-cal-client.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/calendar/libecal/e-cal-client.c	2022-08-05 07:45:35.000000000 +0000
@@ -5187,13 +5187,13 @@ e_cal_client_modify_objects_sync (ECalCl
 
 	mod_flags = g_string_new (NULL);
 	flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
-	flags_value = g_flags_get_first_value (flags_class, mod);
-	while (flags_value != NULL) {
+	for (flags_value = g_flags_get_first_value (flags_class, mod);
+	     flags_value && mod;
+	     flags_value = g_flags_get_first_value (flags_class, mod)) {
 		if (mod_flags->len > 0)
 			g_string_append_c (mod_flags, ':');
 		g_string_append (mod_flags, flags_value->value_nick);
 		mod &= ~flags_value->value;
-		flags_value = g_flags_get_first_value (flags_class, mod);
 	}
 
 	strv = g_new0 (gchar *, g_slist_length (icalcomps) + 1);
@@ -5549,13 +5549,13 @@ e_cal_client_remove_objects_sync (ECalCl
 
 	mod_flags = g_string_new (NULL);
 	flags_class = g_type_class_ref (E_TYPE_CAL_OBJ_MOD_TYPE);
-	flags_value = g_flags_get_first_value (flags_class, mod);
-	while (flags_value != NULL) {
+	for (flags_value = g_flags_get_first_value (flags_class, mod);
+	     flags_value && mod;
+	     flags_value = g_flags_get_first_value (flags_class, mod)) {
 		if (mod_flags->len > 0)
 			g_string_append_c (mod_flags, ':');
 		g_string_append (mod_flags, flags_value->value_nick);
 		mod &= ~flags_value->value;
-		flags_value = g_flags_get_first_value (flags_class, mod);
 	}
 
 	g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
diff -pruN 3.44.3-2/src/camel/providers/imapx/camel-imapx-store.c 3.44.4-1/src/camel/providers/imapx/camel-imapx-store.c
--- 3.44.3-2/src/camel/providers/imapx/camel-imapx-store.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/camel/providers/imapx/camel-imapx-store.c	2022-08-05 07:45:35.000000000 +0000
@@ -3177,12 +3177,20 @@ imapx_store_unsubscribe_folder_sync (Cam
 	success = camel_imapx_conn_manager_unsubscribe_mailbox_sync (conn_man, mailbox, cancellable, error);
 
 	if (success) {
-		CamelFolderInfo *fi;
+		CamelSettings *settings;
 
-		fi = imapx_store_build_folder_info (
-			CAMEL_IMAPX_STORE (subscribable), folder_name, 0);
-		camel_subscribable_folder_unsubscribed (subscribable, fi);
-		camel_folder_info_free (fi);
+		settings = camel_service_ref_settings (CAMEL_SERVICE (imapx_store));
+
+		/* Notify about unsubscribed folder only if showing subscribed folders only */
+		if (camel_imapx_settings_get_use_subscriptions (CAMEL_IMAPX_SETTINGS (settings))) {
+			CamelFolderInfo *fi;
+
+			fi = imapx_store_build_folder_info (imapx_store, folder_name, 0);
+			camel_subscribable_folder_unsubscribed (subscribable, fi);
+			camel_folder_info_free (fi);
+		}
+
+		g_clear_object (&settings);
 	}
 
 exit:
diff -pruN 3.44.3-2/src/libedataserver/e-soup-auth-bearer.c 3.44.4-1/src/libedataserver/e-soup-auth-bearer.c
--- 3.44.3-2/src/libedataserver/e-soup-auth-bearer.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/libedataserver/e-soup-auth-bearer.c	2022-08-05 07:45:35.000000000 +0000
@@ -120,7 +120,8 @@ e_soup_auth_bearer_is_authenticated (Sou
 
 	g_mutex_lock (&bearer->priv->property_lock);
 
-	authenticated = (bearer->priv->access_token != NULL);
+	authenticated = (bearer->priv->access_token != NULL) &&
+		!e_soup_auth_bearer_is_expired_locked (bearer);
 
 	g_mutex_unlock (&bearer->priv->property_lock);
 
@@ -213,6 +214,7 @@ e_soup_auth_bearer_set_access_token (ESo
 {
 	gboolean was_authenticated;
 	gboolean now_authenticated;
+	gboolean changed;
 
 	g_return_if_fail (E_IS_SOUP_AUTH_BEARER (bearer));
 
@@ -220,13 +222,12 @@ e_soup_auth_bearer_set_access_token (ESo
 
 	g_mutex_lock (&bearer->priv->property_lock);
 
-	if (g_strcmp0 (bearer->priv->access_token, access_token) == 0) {
-		g_mutex_unlock (&bearer->priv->property_lock);
-		return;
-	}
+	changed = g_strcmp0 (bearer->priv->access_token, access_token) != 0;
 
-	g_free (bearer->priv->access_token);
-	bearer->priv->access_token = g_strdup (access_token);
+	if (changed) {
+		g_free (bearer->priv->access_token);
+		bearer->priv->access_token = g_strdup (access_token);
+	}
 
 	if (expires_in_seconds > 0)
 		bearer->priv->expiry = time (NULL) + expires_in_seconds - 5;
@@ -235,12 +236,12 @@ e_soup_auth_bearer_set_access_token (ESo
 
 	g_mutex_unlock (&bearer->priv->property_lock);
 
-	now_authenticated = soup_auth_is_authenticated (SOUP_AUTH (bearer));
+	if (changed) {
+		now_authenticated = soup_auth_is_authenticated (SOUP_AUTH (bearer));
 
-	if (was_authenticated != now_authenticated)
-		g_object_notify (
-			G_OBJECT (bearer),
-			SOUP_AUTH_IS_AUTHENTICATED);
+		if (was_authenticated != now_authenticated)
+			g_object_notify (G_OBJECT (bearer), "is-authenticated");
+	}
 }
 
 /**
diff -pruN 3.44.3-2/src/libedataserver/e-soup-session.c 3.44.4-1/src/libedataserver/e-soup-session.c
--- 3.44.3-2/src/libedataserver/e-soup-session.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/libedataserver/e-soup-session.c	2022-08-05 07:45:35.000000000 +0000
@@ -331,14 +331,19 @@ e_soup_session_authenticate_cb (SoupSess
 
 	session = E_SOUP_SESSION (soup_session);
 
+	g_mutex_lock (&session->priv->property_lock);
 	if (E_IS_SOUP_AUTH_BEARER (auth)) {
 		g_object_ref (auth);
 		g_warn_if_fail ((gpointer) session->priv->using_bearer_auth == (gpointer) auth);
 		g_clear_object (&session->priv->using_bearer_auth);
 		session->priv->using_bearer_auth = E_SOUP_AUTH_BEARER (auth);
+	} else if (session->priv->using_bearer_auth) {
+		/* This can mean the bearer auth expired, then a Basic auth is used by the libsoup;
+		   that's not meant to be done here, thus fail early. */
+		g_mutex_unlock (&session->priv->property_lock);
+		return;
 	}
 
-	g_mutex_lock (&session->priv->property_lock);
 	if (retrying && !session->priv->auth_prefilled) {
 		g_mutex_unlock (&session->priv->property_lock);
 		return;
diff -pruN 3.44.3-2/src/libedataserver/e-source.c 3.44.4-1/src/libedataserver/e-source.c
--- 3.44.3-2/src/libedataserver/e-source.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/libedataserver/e-source.c	2022-08-05 07:45:35.000000000 +0000
@@ -4622,7 +4622,7 @@ e_source_invoke_credentials_required_syn
 
 	flags_class = g_type_class_ref (G_TYPE_TLS_CERTIFICATE_FLAGS);
 	for (flags_value = g_flags_get_first_value (flags_class, certificate_errors);
-	     flags_value;
+	     flags_value && certificate_errors;
 	     flags_value = g_flags_get_first_value (flags_class, certificate_errors)) {
 		if (certificate_errors_str->len)
 			g_string_append_c (certificate_errors_str, ':');
diff -pruN 3.44.3-2/src/services/evolution-alarm-notify/e-alarm-notify.c 3.44.4-1/src/services/evolution-alarm-notify/e-alarm-notify.c
--- 3.44.3-2/src/services/evolution-alarm-notify/e-alarm-notify.c	2022-07-01 09:18:42.000000000 +0000
+++ 3.44.4-1/src/services/evolution-alarm-notify/e-alarm-notify.c	2022-08-05 07:45:35.000000000 +0000
@@ -325,33 +325,16 @@ e_alarm_notify_display (EAlarmNotify *an
 
 	if (!g_hash_table_contains (an->priv->notification_ids, notif_id)) {
 		GNotification *notification;
-		GtkIconInfo *icon_info;
+		GIcon *icon;
 		gchar *detailed_action;
 
 		notification = g_notification_new (_("Reminders"));
 		g_notification_set_body (notification, description);
 
-		icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (), "appointment-soon", 48, 0);
-		if (icon_info) {
-			const gchar *filename;
-
-			filename = gtk_icon_info_get_filename (icon_info);
-			if (filename && *filename) {
-				GFile *file;
-				GIcon *icon;
-
-				file = g_file_new_for_path (filename);
-				icon = g_file_icon_new (file);
-
-				if (icon) {
-					g_notification_set_icon (notification, icon);
-					g_object_unref (icon);
-				}
-
-				g_object_unref (file);
-			}
-
-			gtk_icon_info_free (icon_info);
+		icon = g_themed_icon_new ("appointment-soon");
+		if (icon) {
+			g_notification_set_icon (notification, icon);
+			g_object_unref (icon);
 		}
 
 		detailed_action = g_action_print_detailed_name ("app.show-reminders", NULL);
