Fix Comet with HTTP/APR connector
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 9 Jul 2011 00:28:44 +0000 (00:28 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 9 Jul 2011 00:28:44 +0000 (00:28 +0000)
r1144391 switched the key for the processor map for this connector from the socket to the socket wrapper. That prevented Comet from being able to retrieve the processor from the map when processing a comet event.
This commit changes all the connectors to map the socket (or rather whatever the SocketWrapper wraps) to the processor rather than the SocketWrapper.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1144557 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/coyote/AbstractProtocol.java
java/org/apache/coyote/ajp/AbstractAjpProtocol.java
java/org/apache/coyote/ajp/AjpNioProtocol.java
java/org/apache/coyote/http11/Http11AprProtocol.java
java/org/apache/coyote/http11/Http11NioProtocol.java
java/org/apache/coyote/http11/Http11Protocol.java

index d719bb9..bb46867 100644 (file)
@@ -468,8 +468,8 @@ public abstract class AbstractProtocol implements ProtocolHandler,
         protected RequestGroupInfo global = new RequestGroupInfo();
         protected AtomicLong registerCount = new AtomicLong(0);
 
-        protected ConcurrentHashMap<SocketWrapper<S>,P> connections =
-            new ConcurrentHashMap<SocketWrapper<S>,P>();
+        protected ConcurrentHashMap<S,P> connections =
+            new ConcurrentHashMap<S,P>();
 
         protected RecycledProcessors<P,S> recycledProcessors =
             new RecycledProcessors<P,S>(this);
@@ -491,7 +491,7 @@ public abstract class AbstractProtocol implements ProtocolHandler,
 
         public SocketState process(SocketWrapper<S> socket,
                 SocketStatus status) {
-            P processor = connections.remove(socket);
+            P processor = connections.remove(socket.getSocket());
 
             socket.setAsync(false);
 
index 3e6c060..d479b3b 100644 (file)
@@ -83,7 +83,7 @@ public abstract class AbstractAjpProtocol extends AbstractProtocol {
         @Override
         protected void longPoll(SocketWrapper<S> socket, P processor) {
             // Same requirements for all AJP connectors
-            connections.put(socket, processor);
+            connections.put(socket.getSocket(), processor);
             socket.setAsync(true);
         }
     }
index 987761b..0e217af 100644 (file)
@@ -120,10 +120,10 @@ public class AjpNioProtocol extends AbstractAjpProtocol {
             if (log.isDebugEnabled()) 
                 log.debug("Iterating through our connections to release a socket channel:"+socket);
             boolean released = false;
-            Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>, AjpNioProcessor>> it = connections.entrySet().iterator();
+            Iterator<java.util.Map.Entry<NioChannel, AjpNioProcessor>> it = connections.entrySet().iterator();
             while (it.hasNext()) {
-                java.util.Map.Entry<SocketWrapper<NioChannel>, AjpNioProcessor> entry = it.next();
-                if (entry.getKey().getSocket().getIOChannel()==socket) {
+                java.util.Map.Entry<NioChannel, AjpNioProcessor> entry = it.next();
+                if (entry.getKey().getIOChannel()==socket) {
                     it.remove();
                     AjpNioProcessor result = entry.getValue();
                     result.recycle(true);
index ca8e49c..b0ecbc8 100644 (file)
@@ -230,7 +230,7 @@ public class Http11AprProtocol extends AbstractHttp11Protocol {
         @Override
         protected void longPoll(SocketWrapper<Long> socket,
                 Http11AprProcessor processor) {
-            connections.put(socket, processor);
+            connections.put(socket.getSocket(), processor);
 
             if (processor.isAsync()) {
                 socket.setAsync(true);
index a589d85..d968f80 100644 (file)
@@ -182,10 +182,10 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol {
             if (log.isDebugEnabled()) 
                 log.debug("Iterating through our connections to release a socket channel:"+socket);
             boolean released = false;
-            Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>, Http11NioProcessor>> it = connections.entrySet().iterator();
+            Iterator<java.util.Map.Entry<NioChannel, Http11NioProcessor>> it = connections.entrySet().iterator();
             while (it.hasNext()) {
-                java.util.Map.Entry<SocketWrapper<NioChannel>, Http11NioProcessor> entry = it.next();
-                if (entry.getKey().getSocket().getIOChannel()==socket) {
+                java.util.Map.Entry<NioChannel, Http11NioProcessor> entry = it.next();
+                if (entry.getKey().getIOChannel()==socket) {
                     it.remove();
                     Http11NioProcessor result = entry.getValue();
                     result.recycle();
@@ -252,7 +252,7 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol {
         @Override
         protected void longPoll(SocketWrapper<NioChannel> socket,
                 Http11NioProcessor processor) {
-            connections.put(socket, processor);
+            connections.put(socket.getSocket(), processor);
             
             if (processor.isAsync()) {
                 socket.setAsync(true);
index ef24173..79e65b9 100644 (file)
@@ -153,7 +153,7 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol {
         @Override
         protected void longPoll(SocketWrapper<Socket> socket,
                 Http11Processor processor) {
-            connections.put(socket, processor);
+            connections.put(socket.getSocket(), processor);
         }
 
         @Override