ソースを参照

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.
Oswald Buddenhagen 10 年 前
コミット
bac2b00f1b
1 ファイル変更1 行追加1 行削除
  1. 1 1
      src/drv_imap.c

+ 1 - 1
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 {