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);