Author: markt
Date: Tue Jan 8 21:10:07 2013
New Revision: 1430538
URL: http://svn.apache.org/viewvc?rev=1430538&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54381
Add support for receiving pong messages.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/StreamInbound.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1430508
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/StreamInbound.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/StreamInbound.java?rev=1430538&r1=1430537&r2=1430538&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/StreamInbound.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/StreamInbound.java
Tue Jan 8 21:10:07 2013
@@ -138,7 +138,7 @@ public abstract class StreamInbound impl
} else if (opCode == Constants.OPCODE_PING) {
getWsOutbound().pong(frame.getPayLoad());
} else if (opCode == Constants.OPCODE_PONG) {
- // NO-OP
+ doOnPong(frame.getPayLoad());
} else {
// Unknown OpCode
closeOutboundConnection(
@@ -218,6 +218,18 @@ public abstract class StreamInbound impl
}
}
+ private void doOnPong(ByteBuffer payload) {
+ // Need to call onPong using the web application's class loader
+ Thread t = Thread.currentThread();
+ ClassLoader cl = t.getContextClassLoader();
+ t.setContextClassLoader(applicationClassLoader);
+ try {
+ onPong(payload);
+ } finally {
+ t.setContextClassLoader(cl);
+ }
+ }
+
@Override
public final void onUpgradeComplete() {
// Need to call onOpen using the web application's class loader
@@ -253,6 +265,15 @@ public abstract class StreamInbound impl
// NO-OP
}
+ /**
+ * Intended to be overridden by sub-classes that wish to be notified
+ * when a pong is received. The default implementation is a NO-OP.
+ *
+ * @param payload The payload included in the pong.
+ */
+ protected void onPong(ByteBuffer payload) {
+ // NO-OP
+ }
/**
* This method is called when there is a binary WebSocket message available
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1430538&r1=1430537&r2=1430538&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Jan 8 21:10:07 2013
@@ -121,6 +121,10 @@
Fix NPE in <code>WebappLoader.stopInternal</code> when stop is called
after a failed start. (kkolinko)
</fix>
+ <add>
+ <bug>54381</bug>: Add support for receiving WebSocket pong messages.
+ (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]