aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog8
-rw-r--r--mail/component-factory.c9
-rw-r--r--mail/mail-send-recv.c9
3 files changed, 15 insertions, 11 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index f0362f2923..01ddde4640 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,7 +1,11 @@
2002-05-30 Jeffrey Stedfast <fejj@ximian.com>
- * component-factory.c (store_disconnect): Protect against NULL
- stores. Fixes bug #25456.
+ * mail-send-recv.c (mail_send_receive): Noop if we are in offline
+ mode.
+
+ * component-factory.c (mail_remove_storage): If the store is not
+ in the storage hash, then it must not have ever been added. Fixes
+ bug #25456.
* mail-callbacks.c (view_msg): Oops, create a message-browser
window here, not a folder-browser-window window.
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 07f39faca5..7de338cb95 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -1382,10 +1382,8 @@ mail_lookup_storage (CamelStore *store)
static void
store_disconnect(CamelStore *store, void *event_data, void *data)
{
- if (store) {
- camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
- camel_object_unref (CAMEL_OBJECT (store));
- }
+ camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
+ camel_object_unref (CAMEL_OBJECT (store));
}
void
@@ -1402,6 +1400,9 @@ mail_remove_storage (CamelStore *store)
*/
storage = g_hash_table_lookup (storages_hash, store);
+ if (!storage)
+ return;
+
g_hash_table_remove (storages_hash, store);
/* so i guess potentially we could have a race, add a store while one
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index bac7e17f46..7b28435b32 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -653,7 +653,10 @@ void mail_send_receive (void)
}
return;
}
-
+
+ if (!camel_session_is_online (session))
+ return;
+
sources = mail_config_get_sources();
if (!sources)
return;
@@ -661,10 +664,6 @@ void mail_send_receive (void)
if (!account || !account->transport)
return;
- /* what to do about pop before smtp ?
- Well, probably hook into receive_done or receive_status on
- the right pop account, and when it is, then kick off the
- smtp one. */
data = build_dialogue(sources, outbox_folder, account->transport->url);
scan = data->infos;
while (scan) {