From: Colin Leroy Date: Tue, 14 Jun 2005 03:28:41 +0000 (+0000) Subject: 2005-06-14 [colin] 1.9.11cvs65 X-Git-Tag: rel_1_9_12~42 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=7d6d1ddfc8b7361075174c60c1903bddebbd4a52 2005-06-14 [colin] 1.9.11cvs65 * src/imap.c Various little fixes, mainly on error paths --- diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index a3b466de2..396c72fa3 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -1,3 +1,8 @@ +2005-06-14 [colin] 1.9.11cvs65 + + * src/imap.c + Various little fixes, mainly on error paths + 2005-06-13 [colin] 1.9.11cvs64 * matcher.c diff --git a/PATCHSETS b/PATCHSETS index ab5e4d289..b0adf733d 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -553,3 +553,4 @@ ( cvs diff -u -r 1.179.2.29 -r 1.179.2.30 src/imap.c; cvs diff -u -r 1.395.2.78 -r 1.395.2.79 src/summaryview.c; cvs diff -u -r 1.213.2.30 -r 1.213.2.31 src/folder.c; ) > 1.9.11cvs62.patchset ( cvs diff -u -r 1.213.2.31 -r 1.213.2.32 src/folder.c; ) > 1.9.11cvs63.patchset ( cvs diff -u -r 1.213.2.32 -r 1.213.2.33 src/folder.c; cvs diff -u -r 1.87.2.11 -r 1.87.2.12 src/folder.h; cvs diff -u -r 1.3.2.4 -r 1.3.2.5 src/folderutils.c; cvs diff -u -r 1.179.2.30 -r 1.179.2.31 src/imap.c; cvs diff -u -r 1.75.2.6 -r 1.75.2.7 src/matcher.c; cvs diff -u -r 1.150.2.27 -r 1.150.2.28 src/procmsg.c; cvs diff -u -r 1.60.2.11 -r 1.60.2.12 src/procmsg.h; cvs diff -u -r 1.395.2.79 -r 1.395.2.80 src/summaryview.c; ) > 1.9.11cvs64.patchset +( cvs diff -u -r 1.179.2.31 -r 1.179.2.32 src/imap.c; ) > 1.9.11cvs65.patchset diff --git a/configure.ac b/configure.ac index 34e88b8dc..628858c8e 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=11 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=64 +EXTRA_VERSION=65 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/imap.c b/src/imap.c index 1e7ad81ba..b34ab4e18 100644 --- a/src/imap.c +++ b/src/imap.c @@ -964,16 +964,20 @@ static guint get_size_with_lfs(MsgInfo *info) FILE *fp = NULL; guint cnt = 0; gchar buf[4096]; + if (info == NULL) return -1; + fp = procmsg_open_message(info); if (!fp) return -1; + while (fgets(buf, sizeof (buf), fp) != NULL) { cnt += strlen(buf); if (!strstr(buf, "\r") && strstr(buf, "\n")) cnt++; } + fclose(fp); return cnt; } @@ -998,6 +1002,9 @@ static gchar *imap_fetch_msg_full(Folder *folder, FolderItem *item, gint uid, g_free(path); if (is_file_exist(filename)) { + /* see whether the local file represents the whole message + * or not. As the IMAP server reports size with \r chars, + * we have to update the local file (UNIX \n only) size */ MsgInfo *msginfo = imap_parse_msg(filename, item); MsgInfo *cached = msgcache_get_msg(item->cache,uid); guint have_size = get_size_with_lfs(msginfo); @@ -2019,7 +2026,7 @@ static void *imap_get_uncached_messages_thread(void *data) gchar *tmp; GSList *newlist = NULL; GSList *llast = NULL; - GString *str; + GString *str = NULL; MsgInfo *msginfo; GSList *seq_list, *cur; IMAPSet imapset; @@ -2046,6 +2053,7 @@ static void *imap_get_uncached_messages_thread(void *data) if ((tmp =sock_getline(SESSION(session)->sock)) == NULL) { log_warning(_("error occurred while getting envelope.\n")); g_string_free(str, TRUE); + str = NULL; break; } strretchomp(tmp); @@ -2084,8 +2092,8 @@ static void *imap_get_uncached_messages_thread(void *data) llast = llast->next; } } - - g_string_free(str, TRUE); + if (str) + g_string_free(str, TRUE); } imap_seq_set_free(seq_list); @@ -2538,8 +2546,10 @@ static gchar *imap_get_header(SockInfo *sock, gchar *cur_pos, gchar **headers, cur_pos = str->str; do { - if ((nextline = sock_getline(sock)) == NULL) + if ((nextline = sock_getline(sock)) == NULL) { + *headers = NULL; return cur_pos; + } block_len += strlen(nextline); g_string_append(str, nextline); cur_pos = str->str; @@ -2995,7 +3005,7 @@ static gint imap_cmd_login(IMAPSession *session, return IMAP_ERROR; } g_free(ans); - imap_gen_recv_with_block(session, &ans, TRUE); + ok = imap_gen_recv_with_block(session, &ans, TRUE); if (ok != IMAP_SUCCESS || ans[0] != '+' || ans[1] != ' ') { g_free(ans); return IMAP_ERROR;