You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/12/08 21:54:46 UTC

svn commit: r1212118 - /tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java

Author: markt
Date: Thu Dec  8 20:54:46 2011
New Revision: 1212118

URL: http://svn.apache.org/viewvc?rev=1212118&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52208
Avoid possible NPEs if stopListening is called in a different thread

Modified:
    tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java

Modified: tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java?rev=1212118&r1=1212117&r2=1212118&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java (original)
+++ tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java Thu Dec  8 20:54:46 2011
@@ -236,6 +236,10 @@ public class NioReceiver extends Receive
         }
 
         setListen(true);
+
+        // Avoid NPEs if selector is set to null on stop.
+        Selector selector = this.selector;
+
         if (selector!=null && datagramChannel!=null) {
             ObjectReader oreader = new ObjectReader(MAX_UDP_SIZE); //max size for a datagram packet
             datagramChannel.socket().setSendBufferSize(getUdpTxBufSize());
@@ -267,7 +271,7 @@ public class NioReceiver extends Receive
                     continue; // nothing to do
                 }
                 // get an iterator over the set of selected keys
-                Iterator<SelectionKey> it = (selector!=null)?selector.selectedKeys().iterator():null;
+                Iterator<SelectionKey> it = selector.selectedKeys().iterator();
                 // look at each key in the selected set
                 while (it!=null && it.hasNext()) {
                     SelectionKey key = it.next();
@@ -298,7 +302,7 @@ public class NioReceiver extends Receive
                     }
 
                     // remove key from selected set, it's been handled
-                    if (selector!=null) it.remove();
+                    it.remove();
                 }
             } catch (java.nio.channels.ClosedSelectorException cse) {
                 // ignore is normal at shutdown or stop listen socket



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org