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