Index: plugins/exchange-operations/org-gnome-exchange-operations.error.xml
===================================================================
--- plugins/exchange-operations/org-gnome-exchange-operations.error.xml	(revision 36615)
+++ plugins/exchange-operations/org-gnome-exchange-operations.error.xml	(working copy)
@@ -48,6 +48,11 @@
   <_secondary>Cannot display folders.</_secondary>
  </error>
 
+ <error id="exchange-settings-offline" type="info">
+  <_primary>Exchange Account is offline.</_primary>
+  <_secondary>Cannot access the "Exchange settings" tab in offline mode.</_secondary>
+ </error>
+
  <error id="account-offline-generic" type="info">
   <_primary>Exchange Account is offline.</_primary>
   <_secondary>Cannot perform the operation.</_secondary>
Index: plugins/exchange-operations/exchange-account-setup.c
===================================================================
--- plugins/exchange-operations/exchange-account-setup.c	(revision 36615)
+++ plugins/exchange-operations/exchange-account-setup.c	(working copy)
@@ -181,6 +181,7 @@
 	const char *source_url;
 	char *message = NULL, *txt = NULL, *oof_message;
 	gboolean oof_state = FALSE;
+	gint offline_status;
 
 	GtkVBox *vbox_settings;
 
@@ -234,6 +235,14 @@
 
 	account = exchange_operations_get_exchange_account ();
 
+	exchange_config_listener_get_offline_status (exchange_global_config_listener,
+								    &offline_status);
+	if (offline_status == OFFLINE_MODE) {
+		e_error_run (NULL, ERROR_DOMAIN ":exchange-settings-offline", NULL);
+	
+		return NULL;
+	}	
+
 	oof_data = g_new0 (OOFData, 1);
 
 	oof_data->state = FALSE;
@@ -815,7 +824,8 @@
 {
 	if (oof_data->message)
 		g_free (oof_data->message);
-	g_free (oof_data);
+	if (oof_data)
+		g_free (oof_data);
 }
 
 void
@@ -824,6 +834,7 @@
 	EMConfigTargetAccount *target_account;
 	const char *source_url;
 	CamelURL *url;
+	gint offline_status;
 
 	target_account = (EMConfigTargetAccount *)data->config->target;
 	source_url = e_account_get_string (target_account->account,  E_ACCOUNT_SOURCE_URL);
@@ -844,6 +855,14 @@
 	}
 
 	camel_url_free (url);
+	
+	exchange_config_listener_get_offline_status (exchange_global_config_listener,
+								    &offline_status);
+	
+	if (offline_status == OFFLINE_MODE) {
+                return;
+	}
+	
 	/* Set oof data in exchange account */
 	set_oof_info ();
 	destroy_oof_data ();
Index: plugins/exchange-operations/ChangeLog
===================================================================
--- plugins/exchange-operations/ChangeLog	(revision 36735)
+++ plugins/exchange-operations/ChangeLog	(working copy)
@@ -1,3 +1,12 @@
+2008-11-04  Bharath Acharya  <abharath@novell.com>
+
+	** Fix for bug #558498
+
+	* exchange-account-setup.c: (org_gnome_exchange_settings),
+	(destroy_oof_data), (org_gnome_exchange_commit):
+	* org-gnome-exchange-operations.error.xml:Check for the offline status
+	before setting up the Exchange settings.
+
 2008-10-08  Milan Crha  <mcrha@redhat.com>
 
 	** Fix for bug #530606
