[dovecot-cvs] dovecot/src/lib-mail message-parser.c,1.45,1.46
message-parser.h,1.21,1.22
cras at procontrol.fi
cras at procontrol.fi
Wed Aug 20 05:41:32 EEST 2003
- Previous message: [dovecot-cvs] dovecot/src/lib-imap imap-bodystructure.c,1.43,1.44
imap-bodystructure.h,1.7,1.8
- Next message: [dovecot-cvs]
dovecot/src/lib-storage/index index-mail-headers.c,1.1,1.2
index-mail.c,1.17,1.18 index-mail.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-mail
In directory danu:/tmp/cvs-serv282/lib-mail
Modified Files:
message-parser.c message-parser.h
Log Message:
If BODY/BODYSTRUCTURE is requested with some other headers, parse the
headers only once. If body contains multiple MIME parts, cache the internal
MIME structure so BODY[part] fetching doesn't need to parse it again.
Index: message-parser.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-parser.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- message-parser.c 6 Aug 2003 00:26:40 -0000 1.45
+++ message-parser.c 20 Aug 2003 01:41:30 -0000 1.46
@@ -564,6 +564,35 @@
return part;
}
+static void part_parse_headers(struct message_part *part, struct istream *input,
+ uoff_t start_offset,
+ message_header_callback_t *callback,
+ void *context)
+{
+ while (part != NULL) {
+ /* note that we want to parse the header of all
+ the message parts, multiparts too. */
+ i_assert(part->physical_pos >= input->v_offset - start_offset);
+ i_stream_skip(input, part->physical_pos -
+ (input->v_offset - start_offset));
+
+ message_parse_header(part, input, NULL, callback, context);
+ if (part->children != NULL) {
+ part_parse_headers(part->children, input,
+ start_offset, callback, context);
+ }
+
+ part = part->next;
+ }
+}
+
+void message_parse_from_parts(struct message_part *part, struct istream *input,
+ message_header_callback_t *callback,
+ void *context)
+{
+ part_parse_headers(part, input, input->v_offset, callback, context);
+}
+
void message_parse_header(struct message_part *part, struct istream *input,
struct message_size *hdr_size,
message_header_callback_t *callback, void *context)
Index: message-parser.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-mail/message-parser.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- message-parser.h 13 Jul 2003 01:08:10 -0000 1.21
+++ message-parser.h 20 Aug 2003 01:41:30 -0000 1.22
@@ -65,6 +65,9 @@
struct message_part *message_parse(pool_t pool, struct istream *input,
message_header_callback_t *callback,
void *context);
+void message_parse_from_parts(struct message_part *part, struct istream *input,
+ message_header_callback_t *callback,
+ void *context);
void message_parse_header(struct message_part *part, struct istream *input,
struct message_size *hdr_size,
message_header_callback_t *callback, void *context);
- Previous message: [dovecot-cvs] dovecot/src/lib-imap imap-bodystructure.c,1.43,1.44
imap-bodystructure.h,1.7,1.8
- Next message: [dovecot-cvs]
dovecot/src/lib-storage/index index-mail-headers.c,1.1,1.2
index-mail.c,1.17,1.18 index-mail.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list