[dovecot-cvs] dovecot/src/lib-storage/index index-mail.c,1.7,1.8

cras at procontrol.fi cras at procontrol.fi
Wed Jun 4 19:58:01 EEST 2003


Update of /home/cvs/dovecot/src/lib-storage/index
In directory danu:/tmp/cvs-serv27024/lib-storage/index

Modified Files:
	index-mail.c 
Log Message:
IMAP protocol doesn't allow server to send NULs to client. Send ascii #128
instead.



Index: index-mail.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-mail.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- index-mail.c	26 Mar 2003 17:29:02 -0000	1.7
+++ index-mail.c	4 Jun 2003 15:57:59 -0000	1.8
@@ -40,6 +40,15 @@
 		return NULL;
 	}
 
+	/* we know the NULs now, update them */
+	if ((part->flags & MESSAGE_PART_FLAG_HAS_NULS) != 0) {
+		mail->mail.has_nuls = TRUE;
+		mail->mail.has_no_nuls = FALSE;
+	} else {
+		mail->mail.has_nuls = FALSE;
+		mail->mail.has_no_nuls = TRUE;
+	}
+
 	return part;
 }
 
@@ -261,6 +270,16 @@
         index_mail_init_parse_header(mail);
 	data->parts = message_parse(mail->pool, data->stream,
 				    index_mail_parse_header, mail);
+
+	/* we know the NULs now, update them */
+	if ((data->parts->flags & MESSAGE_PART_FLAG_HAS_NULS) != 0) {
+		_mail->has_nuls = TRUE;
+		_mail->has_no_nuls = FALSE;
+	} else {
+		_mail->has_nuls = FALSE;
+		_mail->has_no_nuls = TRUE;
+	}
+
 	return data->parts;
 }
 
@@ -411,13 +430,13 @@
 		return (uoff_t)-1;
 
 	if (hdr_phys_size == (uoff_t)-1) {
-		message_get_header_size(data->stream, &data->hdr_size);
+		message_get_header_size(data->stream, &data->hdr_size, NULL);
 		hdr_size = data->hdr_size.virtual_size;
 		data->hdr_size_set = TRUE;
 	}
 	if (body_size == (uoff_t)-1) {
 		message_get_body_size(data->stream, &data->body_size,
-				      (uoff_t)-1, NULL);
+				      (uoff_t)-1, NULL, NULL);
 		body_size = data->body_size.virtual_size;
 		data->body_size_set = TRUE;
 	}
@@ -534,7 +553,8 @@
 
 	if (hdr_size != NULL) {
 		if (!data->hdr_size_set) {
-			message_get_header_size(data->stream, &data->hdr_size);
+			message_get_header_size(data->stream, &data->hdr_size,
+						NULL);
 			data->hdr_size_set = TRUE;
 		}
 
@@ -547,7 +567,7 @@
 				      data->hdr_size.physical_size);
 
 			message_get_body_size(data->stream, &data->body_size,
-					      (uoff_t)-1, NULL);
+					      (uoff_t)-1, NULL, NULL);
 			data->body_size_set = TRUE;
 		}
 
@@ -618,7 +638,7 @@
 }
 
 static struct mail index_mail = {
-	0, 0, 0,
+	0, 0, 0, 0, 0,
 
 	get_flags,
 	get_parts,
@@ -657,6 +677,11 @@
 
 	memset(data, 0, sizeof(*data));
 	p_clear(mail->pool);
+
+	mail->mail.has_nuls =
+		(rec->index_flags & INDEX_MAIL_FLAG_HAS_NULS) != 0;
+	mail->mail.has_no_nuls =
+		(rec->index_flags & INDEX_MAIL_FLAG_HAS_NO_NULS) != 0;
 
 	data->rec = rec;
 	data->size = (uoff_t)-1;



More information about the dovecot-cvs mailing list