From 4b8db65b16c21f0f042499e974dcf685fac009a4 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Mon, 3 Jun 2019 08:44:35 +0200 Subject: [PATCH] Allow null sender when using DatagramPacketEncoder (#9204) Motivation: It is valid to use null as sender so we should support it when DatagramPacketEncoder checks if it supports the message. Modifications: - Add null check - Add unit test Result: Fixes https://github.com/netty/netty/issues/9199. --- .../io/netty/handler/codec/DatagramPacketEncoder.java | 2 +- .../handler/codec/DatagramPacketEncoderTest.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/codec/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java b/codec/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java index 6b39dd32142..d3de4c2949c 100644 --- a/codec/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java +++ b/codec/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java @@ -64,7 +64,7 @@ public boolean acceptOutboundMessage(Object msg) throws Exception { @SuppressWarnings("rawtypes") AddressedEnvelope envelope = (AddressedEnvelope) msg; return encoder.acceptOutboundMessage(envelope.content()) - && envelope.sender() instanceof InetSocketAddress + && (envelope.sender() instanceof InetSocketAddress || envelope.sender() == null) && envelope.recipient() instanceof InetSocketAddress; } return false; diff --git a/codec/src/test/java/io/netty/handler/codec/DatagramPacketEncoderTest.java b/codec/src/test/java/io/netty/handler/codec/DatagramPacketEncoderTest.java index 9c04c7156f3..f3939ccfdf4 100644 --- a/codec/src/test/java/io/netty/handler/codec/DatagramPacketEncoderTest.java +++ b/codec/src/test/java/io/netty/handler/codec/DatagramPacketEncoderTest.java @@ -51,8 +51,17 @@ public void tearDown() { @Test public void testEncode() { + testEncode(false); + } + + @Test + public void testEncodeWithSenderIsNull() { + testEncode(true); + } + + private void testEncode(boolean senderIsNull) { InetSocketAddress recipient = SocketUtils.socketAddress("127.0.0.1", 10000); - InetSocketAddress sender = SocketUtils.socketAddress("127.0.0.1", 20000); + InetSocketAddress sender = senderIsNull ? null : SocketUtils.socketAddress("127.0.0.1", 20000); assertTrue(channel.writeOutbound( new DefaultAddressedEnvelope<>("netty", recipient, sender))); DatagramPacket packet = channel.readOutbound();