[dovecot-cvs] dovecot/src/imap imap-fetch.c,1.2,1.3
cras at procontrol.fi
cras at procontrol.fi
Tue Jan 21 08:42:35 EET 2003
Update of /home/cvs/dovecot/src/imap
In directory danu:/tmp/cvs-serv31479
Modified Files:
imap-fetch.c
Log Message:
FETCH ate too much memory
Index: imap-fetch.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/imap-fetch.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- imap-fetch.c 21 Jan 2003 05:37:35 -0000 1.2
+++ imap-fetch.c 21 Jan 2003 06:42:32 -0000 1.3
@@ -168,6 +168,8 @@
size_t len, orig_len;
int failed, data_written;
+ t_push();
+
str_truncate(ctx->str, 0);
str_printfa(ctx->str, "* %u FETCH (", mail->seq);
orig_len = str_len(ctx->str);
@@ -179,17 +181,23 @@
if (ctx->imap_data & IMAP_FETCH_UID)
fetch_uid(ctx, mail);
if ((ctx->fetch_data & MAIL_FETCH_FLAGS) || mail->seen_updated)
- fetch_flags(ctx, mail);
+ if (!fetch_flags(ctx, mail))
+ break;
if (ctx->fetch_data & MAIL_FETCH_RECEIVED_DATE)
- fetch_internaldate(ctx, mail);
+ if (!fetch_internaldate(ctx, mail))
+ break;
if (ctx->fetch_data & MAIL_FETCH_SIZE)
- fetch_rfc822_size(ctx, mail);
+ if (!fetch_rfc822_size(ctx, mail))
+ break;
if (ctx->fetch_data & MAIL_FETCH_IMAP_BODY)
- fetch_body(ctx, mail);
+ if (!fetch_body(ctx, mail))
+ break;
if (ctx->fetch_data & MAIL_FETCH_IMAP_BODYSTRUCTURE)
- fetch_bodystructure(ctx, mail);
+ if (!fetch_bodystructure(ctx, mail))
+ break;
if (ctx->fetch_data & MAIL_FETCH_IMAP_ENVELOPE)
- fetch_envelope(ctx, mail);
+ if(!fetch_envelope(ctx, mail))
+ break;
/* send the data written into temp string */
len = str_len(ctx->str);
@@ -226,6 +234,7 @@
failed = TRUE;
}
+ t_pop();
return !failed;
}
@@ -261,7 +270,7 @@
ctx.bodies = bodies;
ctx.output = client->output;
ctx.select_counter = client->select_counter;
- ctx.str = t_str_new(8192);
+ ctx.str = str_new(default_pool, 8192);
ctx.fetch_ctx = client->mailbox->
fetch_init(client->mailbox, fetch_data, &update_seen,
More information about the dovecot-cvs
mailing list