Index: servers/exchange/storage/exchange-account.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/exchange-account.c,v
retrieving revision 1.37
diff -u -p -r1.37 exchange-account.c
--- servers/exchange/storage/exchange-account.c	15 Nov 2006 08:01:16 -0000	1.37
+++ servers/exchange/storage/exchange-account.c	21 Nov 2006 14:36:27 -0000
@@ -783,8 +783,30 @@ exchange_account_open_folder (ExchangeAc
 	g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (account), 
 				EXCHANGE_ACCOUNT_FOLDER_GENERIC_ERROR);
 
-	if (!get_folder (account, path, &folder, &hier))
-		return EXCHANGE_ACCOUNT_FOLDER_DOES_NOT_EXIST;
+	if (!get_folder (account, path, &folder, &hier)) {
+		if (strcmp (path, "/public") == 0) {
+			char * phys_uri_prefix;
+
+			phys_uri_prefix = g_strdup_printf ("exchange://%s/;public",
+							   account->priv->uri_authority);
+			hier = exchange_hierarchy_webdav_new (account,
+							      EXCHANGE_HIERARCHY_PUBLIC,
+							      /* i18n: Outlookism */
+							      _("All Public Folders"),
+							      phys_uri_prefix,
+							      account->public_uri,
+							      account->priv->identity_name,
+							      account->priv->identity_email,
+							      account->priv->source_uri,
+							      TRUE);
+			setup_hierarchy (account, hier);
+			g_free (phys_uri_prefix);
+			if (!get_folder (account, path, &folder, &hier))
+				return EXCHANGE_ACCOUNT_FOLDER_DOES_NOT_EXIST;
+		} else
+			return EXCHANGE_ACCOUNT_FOLDER_DOES_NOT_EXIST;
+
+	}
 
 	exchange_account_is_offline (account, &mode);
 	if (mode == ONLINE_MODE && !account->priv->connected &&
@@ -1263,22 +1285,6 @@ setup_account_hierarchies (ExchangeAccou
 	setup_hierarchy (account, hier);
 	g_free (phys_uri_prefix);
 	account->priv->favorites_hierarchy = hier;
-
-	/* Public Folders */
-	phys_uri_prefix = g_strdup_printf ("exchange://%s/;public",
-					   account->priv->uri_authority);
-	hier = exchange_hierarchy_webdav_new (account,
-					      EXCHANGE_HIERARCHY_PUBLIC,
-					      /* i18n: Outlookism */
-					      _("All Public Folders"),
-					      phys_uri_prefix,
-					      account->public_uri,
-					      account->priv->identity_name,
-					      account->priv->identity_email,
-					      account->priv->source_uri,
-					      FALSE);
-	setup_hierarchy (account, hier);
-	g_free (phys_uri_prefix);
 
 	/* Global Address List */
 	phys_uri_prefix = g_strdup_printf ("gal://%s/gal",
