diff --git a/smack-core/src/main/java/org/jivesoftware/smack/SmackReactor.java b/smack-core/src/main/java/org/jivesoftware/smack/SmackReactor.java index eaff9ca3d..75e1af8e9 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/SmackReactor.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/SmackReactor.java @@ -17,7 +17,6 @@ package org.jivesoftware.smack; import java.io.IOException; -import java.lang.ref.WeakReference; import java.nio.channels.CancelledKeyException; import java.nio.channels.ClosedChannelException; import java.nio.channels.SelectableChannel; @@ -368,13 +367,8 @@ public class SmackReactor { for (SelectionKey selectionKey : selectedKeys) { SelectableChannel channel = selectionKey.channel(); SelectionKeyAttachment selectionKeyAttachment = (SelectionKeyAttachment) selectionKey.attachment(); - ChannelSelectedCallback channelSelectedCallback = selectionKeyAttachment.weaeklyReferencedChannelSelectedCallback.get(); - if (channelSelectedCallback != null) { - channelSelectedCallback.onChannelSelected(channel, selectionKey); - } - else { - selectionKey.cancel(); - } + ChannelSelectedCallback channelSelectedCallback = selectionKeyAttachment.channelSelectedCallback; + channelSelectedCallback.onChannelSelected(channel, selectionKey); } } @@ -422,11 +416,11 @@ public class SmackReactor { } public static final class SelectionKeyAttachment { - private final WeakReference weaeklyReferencedChannelSelectedCallback; + private final ChannelSelectedCallback channelSelectedCallback; private final AtomicBoolean reactorThreadRacing = new AtomicBoolean(); private SelectionKeyAttachment(ChannelSelectedCallback channelSelectedCallback) { - this.weaeklyReferencedChannelSelectedCallback = new WeakReference<>(channelSelectedCallback); + this.channelSelectedCallback = channelSelectedCallback; } private void setRacing() {