Author: markt
Date: Tue Aug 19 10:52:44 2014
New Revision: 1618835

URL: http://svn.apache.org/r1618835
Log:
Add plumbing to write reserved bits as set in the MessagePart rather
than hard-coding them to 0.
Re-order method parameters for writing header to align with RFC 6455.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1618835&r1=1618834&r2=1618835&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 
Tue Aug 19 10:52:44 2014
@@ -390,8 +390,8 @@ public abstract class WsRemoteEndpointIm
         }
 
         headerBuffer.clear();
-        writeHeader(headerBuffer, mp.getOpCode(), mp.getPayload(), first,
-                mp.isFin(), isMasked(), mask);
+        writeHeader(headerBuffer, mp.isFin(), mp.getRsv(), mp.getOpCode(),
+                isMasked(), mp.getPayload(), mask, first);
         headerBuffer.flip();
 
         if (getBatchingAllowed() || isMasked()) {
@@ -549,20 +549,22 @@ public abstract class WsRemoteEndpointIm
     protected abstract boolean isMasked();
     protected abstract void doClose();
 
-    private static void writeHeader(ByteBuffer headerBuffer, byte opCode,
-            ByteBuffer payload, boolean first, boolean last, boolean masked,
-            byte[] mask) {
+    private static void writeHeader(ByteBuffer headerBuffer, boolean fin,
+            int rsv, byte opCode, boolean masked, ByteBuffer payload,
+            byte[] mask, boolean first) {
 
         byte b = 0;
 
-        if (last) {
+        if (fin) {
             // Set the fin bit
-            b = -128;
+            b -= 128;
         }
 
+        b += (rsv << 4);
+
         if (first) {
             // This is the first fragment of this message
-            b = (byte) (b + opCode);
+            b += opCode;
         }
         // If not the first fragment, it is a continuation with opCode of zero
 



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

Reply via email to