Mercurial > dovecot > core-2.2
changeset 117:97d0b9fcc18a HEAD
APPEND was broken.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 02 Sep 2002 21:14:07 +0300 |
parents | b1d05f79758f |
children | 8abce0f7d065 |
files | src/imap/cmd-append.c src/lib-storage/index/index-save.c |
diffstat | 2 files changed, 11 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/cmd-append.c Mon Sep 02 21:13:47 2002 +0300 +++ b/src/imap/cmd-append.c Mon Sep 02 21:14:07 2002 +0300 @@ -1,6 +1,7 @@ /* Copyright (C) 2002 Timo Sirainen */ #include "common.h" +#include "ioloop.h" #include "commands.h" #include "imap-parser.h" #include "rfc822-date.h" @@ -13,16 +14,15 @@ unsigned int *msg_size, unsigned int count) { ImapArg *args; - int ret; i_assert(count >= 2 && count <= 4); *flags = NULL; *internal_date = NULL; - ret = client_read_args(client, count, IMAP_PARSE_FLAG_LITERAL_SIZE, - &args); - i_assert((unsigned int) ret == count); + if (!client_read_args(client, count, IMAP_PARSE_FLAG_LITERAL_SIZE, + &args)) + return 0; switch (count) { case 2: @@ -61,10 +61,10 @@ if (*mailbox == NULL) return -1; - if (args[ret-1].type != IMAP_ARG_LITERAL_SIZE) + if (args[count-1].type != IMAP_ARG_LITERAL_SIZE) return -1; - *msg_size = args[ret-1].data.literal_size; + *msg_size = args[count-1].data.literal_size; return 1; } @@ -95,7 +95,10 @@ if (!client_parse_mail_flags(client, flags_list, &flags, custom_flags)) return TRUE; - if (!rfc822_parse_date(internal_date_str, &internal_date)) { + if (internal_date_str == NULL) { + /* no time given, default to now. */ + internal_date = ioloop_time; + } else if (!rfc822_parse_date(internal_date_str, &internal_date)) { client_send_tagline(client, "BAD Invalid internal date."); return TRUE; }
--- a/src/lib-storage/index/index-save.c Mon Sep 02 21:13:47 2002 +0300 +++ b/src/lib-storage/index/index-save.c Mon Sep 02 21:14:07 2002 +0300 @@ -46,7 +46,7 @@ last_cr = FALSE; - while ((ret = io_buffer_read(buf)) != 0) { + while (data_size > 0 && (ret = io_buffer_read(buf)) != 0) { if (ret == -1) { mail_storage_set_critical(storage, "Error reading mail: %m");