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 2015/03/16 14:46:51 UTC

svn commit: r1666995 - /tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Author: markt
Date: Mon Mar 16 13:46:50 2015
New Revision: 1666995

URL: http://svn.apache.org/r1666995
Log:
Until we have a better understanding of BZ 56313, always merge regardless of OS

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1666995&r1=1666994&r2=1666995&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Mon Mar 16 13:46:50 2015
@@ -1920,29 +1920,27 @@ public class AprEndpoint extends Abstrac
 
 
         private int mergeDescriptors(long[] desc, int startCount) {
-            if (OS.IS_BSD || OS.IS_MACOSX) {
-                /*
-                 * Notes: Only the first startCount * 2 elements of the array
-                 *        are populated.
-                 *        The array is event, socket, event, socket etc.
-                 */
-                HashMap<Long,Long> merged = new HashMap<>(startCount);
-                for (int n = 0; n < startCount; n++) {
-                    merged.merge(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]),
-                            (v1, v2) -> Long.valueOf(v1.longValue() | v2.longValue()));
-                }
-                int i = 0;
-                for (Map.Entry<Long,Long> entry : merged.entrySet()) {
-                    desc[i++] = entry.getValue().longValue();
-                    desc[i++] = entry.getKey().longValue();
-                }
-                return merged.size();
-            } else {
-                // Other OS's do not (as far as it is known) return multiple
-                // entries for the same socket when the socket is registered for
-                // multiple events.
-                return startCount;
+            /*
+             * https://bz.apache.org/bugzilla/show_bug.cgi?id=57653#c6 suggests
+             * this merging is only necessary on OSX and BSD.
+             *
+             * https://bz.apache.org/bugzilla/show_bug.cgi?id=56313 suggests the
+             * same, or a similar, issue is happening on Windows.
+             * Notes: Only the first startCount * 2 elements of the array
+             *        are populated.
+             *        The array is event, socket, event, socket etc.
+             */
+            HashMap<Long,Long> merged = new HashMap<>(startCount);
+            for (int n = 0; n < startCount; n++) {
+                merged.merge(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]),
+                        (v1, v2) -> Long.valueOf(v1.longValue() | v2.longValue()));
             }
+            int i = 0;
+            for (Map.Entry<Long,Long> entry : merged.entrySet()) {
+                desc[i++] = entry.getValue().longValue();
+                desc[i++] = entry.getKey().longValue();
+            }
+            return merged.size();
         }
     }
 



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