diff --git a/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpResponseDecoder.java b/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpResponseDecoder.java index 13587b36bc..eadea32654 100644 --- a/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpResponseDecoder.java +++ b/codec-smtp/src/main/java/io/netty/handler/codec/smtp/SmtpResponseDecoder.java @@ -69,7 +69,11 @@ public final class SmtpResponseDecoder extends LineBasedFrameDecoder { details.add(detail); } } else { - details = Collections.singletonList(detail); + if (detail == null) { + details = Collections.emptyList(); + } else { + details = Collections.singletonList(detail); + } } return new DefaultSmtpResponse(code, details); case '-': diff --git a/codec-smtp/src/test/java/io/netty/handler/codec/smtp/SmtpResponseDecoderTest.java b/codec-smtp/src/test/java/io/netty/handler/codec/smtp/SmtpResponseDecoderTest.java index 7ccc993acb..24044fa287 100644 --- a/codec-smtp/src/test/java/io/netty/handler/codec/smtp/SmtpResponseDecoderTest.java +++ b/codec-smtp/src/test/java/io/netty/handler/codec/smtp/SmtpResponseDecoderTest.java @@ -43,6 +43,18 @@ public class SmtpResponseDecoderTest { assertNull(channel.readInbound()); } + @Test + public void testDecodeOneLineResponseNoDetails() { + EmbeddedChannel channel = newChannel(); + assertTrue(channel.writeInbound(newBuffer("250 \r\n"))); + assertTrue(channel.finish()); + + SmtpResponse response = channel.readInbound(); + assertEquals(250, response.code()); + List sequences = response.details(); + assertEquals(0, sequences.size()); + } + @Test public void testDecodeOneLineResponseChunked() { EmbeddedChannel channel = newChannel();