* src/etpan/imap-thread.c
Fix bug 1081, 'claws-mail
segfaults when going offline
while it transfers mails via
imap'
+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'
+
2006-12-26 [colin] 2.6.1cvs73
* src/folder_item_prefs.c
2006-12-26 [colin] 2.6.1cvs73
* src/folder_item_prefs.c
( cvs diff -u -r 1.1.2.44 -r 1.1.2.45 src/wizard.c; ) > 2.6.1cvs71.patchset
( cvs diff -u -r 1.2.2.14 -r 1.2.2.15 src/folder_item_prefs.c; ) > 2.6.1cvs72.patchset
( cvs diff -u -r 1.2.2.15 -r 1.2.2.16 src/folder_item_prefs.c; ) > 2.6.1cvs73.patchset
( cvs diff -u -r 1.1.2.44 -r 1.1.2.45 src/wizard.c; ) > 2.6.1cvs71.patchset
( cvs diff -u -r 1.2.2.14 -r 1.2.2.15 src/folder_item_prefs.c; ) > 2.6.1cvs72.patchset
( cvs diff -u -r 1.2.2.15 -r 1.2.2.16 src/folder_item_prefs.c; ) > 2.6.1cvs73.patchset
+( cvs diff -u -r 1.1.4.59 -r 1.1.4.60 src/etpan/imap-thread.c; ) > 2.6.1cvs74.patchset
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
+#define CHECK_IMAP() { \
+ if (!param->imap) { \
+ result->error = MAILIMAP_ERROR_BAD_STATE; \
+ return; \
+ } \
+}
+
static void connect_run(struct etpan_thread_op * op)
{
int r;
static void connect_run(struct etpan_thread_op * op)
{
int r;
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = mailimap_socket_connect(param->imap,
param->server, param->port);
r = mailimap_socket_connect(param->imap,
param->server, param->port);
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = mailimap_ssl_connect(param->imap,
param->server, param->port);
result->error = r;
r = mailimap_ssl_connect(param->imap,
param->server, param->port);
result->error = r;
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = mailimap_capability(param->imap, &caps);
result->error = r;
r = mailimap_capability(param->imap, &caps);
result->error = r;
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = mailimap_logout(param->imap);
result->error = r;
r = mailimap_logout(param->imap);
result->error = r;
clist * list;
param = op->param;
clist * list;
param = op->param;
list = NULL;
r = mailimap_list(param->imap, param->base,
param->wildcard, &list);
list = NULL;
r = mailimap_list(param->imap, param->base,
param->wildcard, &list);
#ifdef DISABLE_LOG_DURING_LOGIN
old_debug = mailstream_debug;
mailstream_debug = 0;
#ifdef DISABLE_LOG_DURING_LOGIN
old_debug = mailstream_debug;
mailstream_debug = 0;
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = mailimap_status(param->imap, param->mb,
param->status_att_list,
&result->data_status);
r = mailimap_status(param->imap, param->mb,
param->status_att_list,
&result->data_status);
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_noop(param->imap);
result = op->result;
r = mailimap_noop(param->imap);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_starttls(param->imap);
result = op->result;
r = mailimap_starttls(param->imap);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_create(param->imap, param->mb);
result = op->result;
r = mailimap_create(param->imap, param->mb);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_rename(param->imap, param->mb, param->new_name);
result = op->result;
r = mailimap_rename(param->imap, param->mb, param->new_name);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_delete(param->imap, param->mb);
result = op->result;
r = mailimap_delete(param->imap, param->mb);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_select(param->imap, param->mb);
result = op->result;
r = mailimap_select(param->imap, param->mb);
result = op->result;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_examine(param->imap, param->mb);
result = op->result;
r = mailimap_examine(param->imap, param->mb);
result = op->result;
/* 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));
/* 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));
fetch_result = NULL;
r = imap_get_messages_list(param->imap, param->first_index,
&fetch_result);
fetch_result = NULL;
r = imap_get_messages_list(param->imap, param->first_index,
&fetch_result);
content = NULL;
content_size = 0;
if (param->with_body)
content = NULL;
content_size = 0;
if (param->with_body)
env_list = NULL;
r = imap_get_envelopes_list(param->imap, param->set,
&env_list);
env_list = NULL;
r = imap_get_envelopes_list(param->imap, param->set,
&env_list);
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = stat(param->filename, &stat_buf);
if (r < 0) {
result->error = MAILIMAP_ERROR_APPEND;
r = stat(param->filename, &stat_buf);
if (r < 0) {
result->error = MAILIMAP_ERROR_APPEND;
int r;
param = op->param;
int r;
param = op->param;
r = mailimap_expunge(param->imap);
result = op->result;
r = mailimap_expunge(param->imap);
result = op->result;
struct copy_result * result;
int r;
guint32 val;
struct copy_result * result;
int r;
guint32 val;
struct mailimap_set *source = NULL, *dest = NULL;
struct mailimap_set *source = NULL, *dest = NULL;
r = mailimap_uidplus_uid_copy(param->imap, param->set, param->mb,
&val, &source, &dest);
r = mailimap_uidplus_uid_copy(param->imap, param->set, param->mb,
&val, &source, &dest);
r = mailimap_uid_store(param->imap, param->set,
param->store_att_flags);
r = mailimap_uid_store(param->imap, param->set,
param->store_att_flags);
param = op->param;
result = op->result;
param = op->param;
result = op->result;
r = socket_connect_cmd(param->imap, param->command,
param->server, param->port);
r = socket_connect_cmd(param->imap, param->command,
param->server, param->port);