Archiviert
13
0

Don't attempt to inject closed channels. Fixes issue #23

Dieser Commit ist enthalten in:
Kristian S. Stangeland 2013-12-08 19:50:59 +01:00
Ursprung 20524c1c3c
Commit 1aaf272878

Datei anzeigen

@ -182,12 +182,17 @@ class ChannelInjector extends ByteToMessageDecoder {
/** /**
* Inject the current channel. * Inject the current channel.
* <p>
* Note that only active channels can be injected.
* @return TRUE if we injected the channel, false if we could not inject or it was already injected.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public boolean inject() { public boolean inject() {
synchronized (networkManager) { synchronized (networkManager) {
if (originalChannel instanceof Factory) if (originalChannel instanceof Factory)
return false; return false;
if (!originalChannel.isActive())
return false;
// Don't inject the same channel twice // Don't inject the same channel twice
if (findChannelHandler(originalChannel, ChannelInjector.class) != null) { if (findChannelHandler(originalChannel, ChannelInjector.class) != null) {
@ -202,9 +207,9 @@ class ChannelInjector extends ByteToMessageDecoder {
vanillaEncoder = (MessageToByteEncoder<Object>) originalChannel.pipeline().get("encoder"); vanillaEncoder = (MessageToByteEncoder<Object>) originalChannel.pipeline().get("encoder");
if (vanillaDecoder == null) if (vanillaDecoder == null)
throw new IllegalArgumentException("Unable to find vanilla decoder.in " + originalChannel.pipeline() + ". " + getChannelState()); throw new IllegalArgumentException("Unable to find vanilla decoder.in " + originalChannel.pipeline() );
if (vanillaEncoder == null) if (vanillaEncoder == null)
throw new IllegalArgumentException("Unable to find vanilla encoder in " + originalChannel.pipeline() + ". " + getChannelState()); throw new IllegalArgumentException("Unable to find vanilla encoder in " + originalChannel.pipeline() );
patchEncoder(vanillaEncoder); patchEncoder(vanillaEncoder);
if (DECODE_BUFFER == null) if (DECODE_BUFFER == null)
@ -245,10 +250,6 @@ class ChannelInjector extends ByteToMessageDecoder {
} }
} }
private String getChannelState() {
return "Registered channel: " + originalChannel.isRegistered() + ", Active channel: " + originalChannel.isActive() + ", Open channel: " + originalChannel.isOpen();
}
/** /**
* Process a given message on the packet listeners. * Process a given message on the packet listeners.
* @param message - the message/packet. * @param message - the message/packet.