From d27bafdef42ec01d843043ed62ba0cc03e91e8d7 Mon Sep 17 00:00:00 2001 From: markt Date: Sat, 9 Jul 2011 00:28:44 +0000 Subject: [PATCH] Fix Comet with HTTP/APR connector 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 | 6 +++--- java/org/apache/coyote/ajp/AbstractAjpProtocol.java | 2 +- java/org/apache/coyote/ajp/AjpNioProtocol.java | 6 +++--- java/org/apache/coyote/http11/Http11AprProtocol.java | 2 +- java/org/apache/coyote/http11/Http11NioProtocol.java | 8 ++++---- java/org/apache/coyote/http11/Http11Protocol.java | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/org/apache/coyote/AbstractProtocol.java b/java/org/apache/coyote/AbstractProtocol.java index d719bb940..bb4686773 100644 --- a/java/org/apache/coyote/AbstractProtocol.java +++ b/java/org/apache/coyote/AbstractProtocol.java @@ -468,8 +468,8 @@ public abstract class AbstractProtocol implements ProtocolHandler, protected RequestGroupInfo global = new RequestGroupInfo(); protected AtomicLong registerCount = new AtomicLong(0); - protected ConcurrentHashMap,P> connections = - new ConcurrentHashMap,P>(); + protected ConcurrentHashMap connections = + new ConcurrentHashMap(); protected RecycledProcessors recycledProcessors = new RecycledProcessors(this); @@ -491,7 +491,7 @@ public abstract class AbstractProtocol implements ProtocolHandler, public SocketState process(SocketWrapper socket, SocketStatus status) { - P processor = connections.remove(socket); + P processor = connections.remove(socket.getSocket()); socket.setAsync(false); diff --git a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java index 3e6c0600d..d479b3b2d 100644 --- a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java +++ b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java @@ -83,7 +83,7 @@ public abstract class AbstractAjpProtocol extends AbstractProtocol { @Override protected void longPoll(SocketWrapper socket, P processor) { // Same requirements for all AJP connectors - connections.put(socket, processor); + connections.put(socket.getSocket(), processor); socket.setAsync(true); } } diff --git a/java/org/apache/coyote/ajp/AjpNioProtocol.java b/java/org/apache/coyote/ajp/AjpNioProtocol.java index 987761b0e..0e217af85 100644 --- a/java/org/apache/coyote/ajp/AjpNioProtocol.java +++ b/java/org/apache/coyote/ajp/AjpNioProtocol.java @@ -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, AjpNioProcessor>> it = connections.entrySet().iterator(); + Iterator> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry, AjpNioProcessor> entry = it.next(); - if (entry.getKey().getSocket().getIOChannel()==socket) { + java.util.Map.Entry entry = it.next(); + if (entry.getKey().getIOChannel()==socket) { it.remove(); AjpNioProcessor result = entry.getValue(); result.recycle(true); diff --git a/java/org/apache/coyote/http11/Http11AprProtocol.java b/java/org/apache/coyote/http11/Http11AprProtocol.java index ca8e49ca2..b0ecbc860 100644 --- a/java/org/apache/coyote/http11/Http11AprProtocol.java +++ b/java/org/apache/coyote/http11/Http11AprProtocol.java @@ -230,7 +230,7 @@ public class Http11AprProtocol extends AbstractHttp11Protocol { @Override protected void longPoll(SocketWrapper socket, Http11AprProcessor processor) { - connections.put(socket, processor); + connections.put(socket.getSocket(), processor); if (processor.isAsync()) { socket.setAsync(true); diff --git a/java/org/apache/coyote/http11/Http11NioProtocol.java b/java/org/apache/coyote/http11/Http11NioProtocol.java index a589d8555..d968f8010 100644 --- a/java/org/apache/coyote/http11/Http11NioProtocol.java +++ b/java/org/apache/coyote/http11/Http11NioProtocol.java @@ -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, Http11NioProcessor>> it = connections.entrySet().iterator(); + Iterator> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry, Http11NioProcessor> entry = it.next(); - if (entry.getKey().getSocket().getIOChannel()==socket) { + java.util.Map.Entry 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 socket, Http11NioProcessor processor) { - connections.put(socket, processor); + connections.put(socket.getSocket(), processor); if (processor.isAsync()) { socket.setAsync(true); diff --git a/java/org/apache/coyote/http11/Http11Protocol.java b/java/org/apache/coyote/http11/Http11Protocol.java index ef2417337..79e65b930 100644 --- a/java/org/apache/coyote/http11/Http11Protocol.java +++ b/java/org/apache/coyote/http11/Http11Protocol.java @@ -153,7 +153,7 @@ public class Http11Protocol extends AbstractHttp11JsseProtocol { @Override protected void longPoll(SocketWrapper socket, Http11Processor processor) { - connections.put(socket, processor); + connections.put(socket.getSocket(), processor); } @Override -- 2.11.0