From 1bc460a64a0de0766d21f4f8660c6597bc410cbc Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Thu, 21 Jan 2016 15:37:08 +0000 Subject: Cutthrough: Fix bug with dot-only line --- src/src/receive.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/src/receive.c b/src/src/receive.c index f2a94e0f8..a479e12cd 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -835,7 +835,15 @@ while ((ch = (receive_getc)()) != EOF) ch_state = 4; continue; } - ch_state = 1; /* The dot itself is removed */ + /* The dot was removed at state 3. For a doubled dot, here, reinstate + it to cutthrough. The current ch, dot or not, is passed both to cutthrough + and to file below. */ + if (ch == '.') + { + uschar c= ch; + (void) cutthrough_puts(&c, 1); + } + ch_state = 1; break; case 4: /* After [CR] LF . CR */ -- cgit v1.2.3