diff --git a/transport/src/main/java/io/netty/channel/local/DefaultLocalServerChannelFactory.java b/transport/src/main/java/io/netty/channel/local/DefaultLocalServerChannelFactory.java index 94a637b70c..025f7d06ca 100644 --- a/transport/src/main/java/io/netty/channel/local/DefaultLocalServerChannelFactory.java +++ b/transport/src/main/java/io/netty/channel/local/DefaultLocalServerChannelFactory.java @@ -17,6 +17,7 @@ package io.netty.channel.local; import io.netty.channel.ChannelPipeline; import io.netty.channel.ChannelSink; +import io.netty.channel.group.DefaultChannelGroup; /** * The default {@link LocalServerChannelFactory} implementation. @@ -24,11 +25,15 @@ import io.netty.channel.ChannelSink; */ public class DefaultLocalServerChannelFactory implements LocalServerChannelFactory { + private final DefaultChannelGroup group = new DefaultChannelGroup(); + private final ChannelSink sink = new LocalServerChannelSink(); @Override public LocalServerChannel newChannel(ChannelPipeline pipeline) { - return DefaultLocalServerChannel.create(this, pipeline, sink); + LocalServerChannel channel = DefaultLocalServerChannel.create(this, pipeline, sink); + group.add(channel); + return channel; } /** @@ -37,6 +42,6 @@ public class DefaultLocalServerChannelFactory implements LocalServerChannelFacto */ @Override public void releaseExternalResources() { - // Unused + group.close(); } } diff --git a/transport/src/test/java/io/netty/channel/local/LocalAddressTest.java b/transport/src/test/java/io/netty/channel/local/LocalAddressTest.java index 6d51b65a7b..a51642e7bf 100644 --- a/transport/src/test/java/io/netty/channel/local/LocalAddressTest.java +++ b/transport/src/test/java/io/netty/channel/local/LocalAddressTest.java @@ -69,7 +69,7 @@ public class LocalAddressTest { LocalAddress addr = new LocalAddress(LOCAL_ADDR_ID); // Start server - Channel channel = sb.bind(addr); + sb.bind(addr); // Connect to the server ChannelFuture connectFuture = cb.connect(addr); @@ -84,9 +84,6 @@ public class LocalAddressTest { // Wait until the connection is closed, or the connection attempt fails connectFuture.getChannel().getCloseFuture().awaitUninterruptibly(); - // close the server channel - channel.close().awaitUninterruptibly(); - sb.releaseExternalResources(); cb.releaseExternalResources(); @@ -127,7 +124,7 @@ public class LocalAddressTest { LocalAddress addr = new LocalAddress(LOCAL_ADDR_ID); // Start server - Channel channel = sb.bind(addr); + sb.bind(addr); // Connect to the server ChannelFuture connectFuture = cb.connect(addr); @@ -142,8 +139,6 @@ public class LocalAddressTest { // Wait until the connection is closed, or the connection attempt fails connectFuture.getChannel().getCloseFuture().awaitUninterruptibly(); - // close the server channel - channel.close().awaitUninterruptibly(); sb.releaseExternalResources(); cb.releaseExternalResources();