evolution-data-server r9982 - trunk/camel/providers/groupwise



Author: psankar
Date: Wed Jan 28 11:41:28 2009
New Revision: 9982
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9982&view=rev

Log:
2009-01-28  Sankar P  <psankar novell com>

	** Fix for bnc bug #467638

	* camel/providers/groupwise/camel-groupwise-store.c:
	Fix the broken current_folder handling code. Lots of
	issues are fixed. some may remain yet.

Modified:
   trunk/camel/providers/groupwise/ChangeLog
   trunk/camel/providers/groupwise/camel-groupwise-store.c

Modified: trunk/camel/providers/groupwise/camel-groupwise-store.c
==============================================================================
--- trunk/camel/providers/groupwise/camel-groupwise-store.c	(original)
+++ trunk/camel/providers/groupwise/camel-groupwise-store.c	Wed Jan 28 11:41:28 2009
@@ -390,6 +390,12 @@
 			g_object_unref (groupwise_store->priv->cnc);
 			groupwise_store->priv->cnc = NULL;
 		}
+
+		if (groupwise_store->current_folder) {
+			camel_object_unref (groupwise_store->current_folder);
+			groupwise_store->current_folder = NULL;
+		}
+
 		CAMEL_SERVICE_REC_UNLOCK (groupwise_store, connect_lock);
 	}
 	
@@ -544,6 +550,7 @@
 	folder = groupwise_get_folder_from_disk (store, folder_name, flags, ex);
 	if (folder) {
 		camel_object_ref (folder);
+		gw_store->current_folder = folder;
 		return folder;
 	}
 
@@ -551,16 +558,17 @@
 
 	CAMEL_SERVICE_REC_LOCK (gw_store, connect_lock);
 
-	if (!camel_groupwise_store_connected (gw_store, ex)) {
-		CAMEL_SERVICE_REC_UNLOCK (gw_store, connect_lock);
-		return NULL;
-	}
-	
 	if (gw_store->current_folder) {
 		camel_object_unref (gw_store->current_folder);
 		gw_store->current_folder = NULL;
 	}
 
+
+	if (!camel_groupwise_store_connected (gw_store, ex)) {
+		CAMEL_SERVICE_REC_UNLOCK (gw_store, connect_lock);
+		return NULL;
+	}
+	
 	if (!E_IS_GW_CONNECTION( priv->cnc)) {
 		if (!groupwise_connect (CAMEL_SERVICE(store), ex)) {
 			CAMEL_SERVICE_REC_UNLOCK (gw_store, connect_lock);
@@ -667,8 +675,8 @@
 
 	camel_folder_summary_save_to_db (folder->summary, ex);
 
-	gw_store->current_folder = folder;
 	camel_object_ref (folder);
+	gw_store->current_folder = folder;
 
 	g_free (container_id);
 	CAMEL_SERVICE_REC_UNLOCK (gw_store, connect_lock);
@@ -1294,8 +1302,10 @@
 	status = e_gw_connection_remove_item (priv->cnc, container, container);
 
 	if (status == E_GW_CONNECTION_STATUS_OK) {
-		if (groupwise_store->current_folder)
+		if (groupwise_store->current_folder) {
 			camel_object_unref (groupwise_store->current_folder);
+			groupwise_store->current_folder = NULL;
+		}
 
 		groupwise_forget_folder(groupwise_store,folder_name,ex);
 
@@ -1332,6 +1342,11 @@
 		return;
 	}
 
+	if (groupwise_store->current_folder) {
+		camel_object_unref (groupwise_store->current_folder);
+		groupwise_store->current_folder = NULL;
+	}
+
 	container_id = camel_groupwise_store_container_id_lookup (groupwise_store, old_name);
 	temp_new = strrchr (new_name, '/');
 	if (temp_new)
@@ -1587,6 +1602,7 @@
 	priv->user = NULL;
 	priv->cnc = NULL;
 	groupwise_store->priv = priv;
+	groupwise_store->current_folder = NULL;
 	
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]