From bac2b00f1bb5148fe233e6259a663508e5daed84 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Sat, 13 Dec 2014 18:29:14 +0100 Subject: [PATCH] disable use of LITERAL+ for payloads > 100k when LITERAL+ is used, the server has no chance for early rejection of messages. this means that the client can upload megabytes for nothing. so simply don't use LITERAL+ for big messages. of course this adds server roundtrips, but that's tough luck. the limit could be arguably higher than 100k (or even configurable). i set it to ~2 sec with my fairly average DSL line. --- src/drv_imap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drv_imap.c b/src/drv_imap.c index 7f8f821..aa13f97 100644 --- a/src/drv_imap.c +++ b/src/drv_imap.c @@ -271,7 +271,7 @@ send_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd ) if (!cmd->param.data) { buffmt = "%d %s\r\n"; litplus = 0; - } else if ((cmd->param.to_trash && ctx->trashnc == TrashUnknown) || !CAP(LITERALPLUS)) { + } else if ((cmd->param.to_trash && ctx->trashnc == TrashUnknown) || !CAP(LITERALPLUS) || cmd->param.data_len >= 100*1024) { buffmt = "%d %s{%d}\r\n"; litplus = 0; } else {