CVS: sylpheedclaws/sylpheed-claws/src/etpan imap-thread.c,1.1.4.59,1.1.4.60
[email protected] Tue, 26 Dec 2006 21:30:53 +0000
| Newsgroups | gmane.mail.sylpheed.claws.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/etpan
In directory sunsite.dk:/tmp/cvs-serv23330/src/etpan
Modified Files:
Tag: gtk2
imap-thread.c
Log Message:
2006-12-26 [colin] 2.6.1cvs74
* src/etpan/imap-thread.c
Fix bug 1081, 'claws-mail
segfaults when going offline
while it transfers mails via
imap'
Index: imap-thread.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/sylpheed-claws/src/etpan/Attic/imap-thread.c,v
retrieving revision 1.1.4.59
retrieving revision 1.1.4.60
diff -u -d -r1.1.4.59 -r1.1.4.60
--- imap-thread.c 2006/12/06 07:21:37 1.1.4.59
+++ imap-thread.c 2006/12/26 21:30:48 1.1.4.60
@@ -379,6 +379,13 @@
int error;
};
+#define CHECK_IMAP() { \
+ if (!param->imap) { \
+ result->error = MAILIMAP_ERROR_BAD_STATE; \
+ return; \
+ } \
+}
+
static void connect_run(struct etpan_thread_op * op)
{
int r;
@@ -388,6 +395,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = mailimap_socket_connect(param->imap,
param->server, param->port);
@@ -459,6 +468,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = mailimap_ssl_connect(param->imap,
param->server, param->port);
result->error = r;
@@ -521,6 +532,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = mailimap_capability(param->imap, &caps);
result->error = r;
@@ -566,6 +579,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = mailimap_logout(param->imap);
result->error = r;
@@ -624,6 +639,9 @@
clist * list;
param = op->param;
+
+ CHECK_IMAP();
+
list = NULL;
r = mailimap_list(param->imap, param->base,
param->wildcard, &list);
@@ -681,6 +699,8 @@
param = op->param;
+ CHECK_IMAP();
+
#ifdef DISABLE_LOG_DURING_LOGIN
old_debug = mailstream_debug;
mailstream_debug = 0;
@@ -753,6 +773,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = mailimap_status(param->imap, param->mb,
param->status_att_list,
&result->data_status);
@@ -824,6 +846,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_noop(param->imap);
result = op->result;
@@ -868,6 +893,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_starttls(param->imap);
result = op->result;
@@ -944,6 +972,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_create(param->imap, param->mb);
result = op->result;
@@ -988,6 +1019,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_rename(param->imap, param->mb, param->new_name);
result = op->result;
@@ -1033,6 +1067,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_delete(param->imap, param->mb);
result = op->result;
@@ -1075,6 +1112,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_select(param->imap, param->mb);
result = op->result;
@@ -1132,6 +1172,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_examine(param->imap, param->mb);
result = op->result;
@@ -1217,6 +1260,8 @@
param = op->param;
+ CHECK_IMAP();
+
/* we copy the mailimap_set because freeing the key is recursive */
if (param->set != NULL) {
uid_key = mailimap_search_key_new_uid(sc_mailimap_set_copy(param->set));
@@ -1493,6 +1538,8 @@
param = op->param;
+ CHECK_IMAP();
+
fetch_result = NULL;
r = imap_get_messages_list(param->imap, param->first_index,
&fetch_result);
@@ -1771,6 +1818,8 @@
param = op->param;
+ CHECK_IMAP();
+
content = NULL;
content_size = 0;
if (param->with_body)
@@ -2146,6 +2195,8 @@
param = op->param;
+ CHECK_IMAP();
+
env_list = NULL;
r = imap_get_envelopes_list(param->imap, param->set,
&env_list);
@@ -2243,6 +2294,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = stat(param->filename, &stat_buf);
if (r < 0) {
result->error = MAILIMAP_ERROR_APPEND;
@@ -2326,6 +2379,9 @@
int r;
param = op->param;
+
+ CHECK_IMAP();
+
r = mailimap_expunge(param->imap);
result = op->result;
@@ -2368,9 +2424,12 @@
struct copy_result * result;
int r;
guint32 val;
- param = op->param;
struct mailimap_set *source = NULL, *dest = NULL;
+
+ param = op->param;
+ CHECK_IMAP();
+
r = mailimap_uidplus_uid_copy(param->imap, param->set, param->mb,
&val, &source, &dest);
@@ -2436,6 +2495,8 @@
param = op->param;
+ CHECK_IMAP();
+
r = mailimap_uid_store(param->imap, param->set,
param->store_att_flags);
@@ -2624,6 +2685,8 @@
param = op->param;
result = op->result;
+ CHECK_IMAP();
+
r = socket_connect_cmd(param->imap, param->command,
param->server, param->port);