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/10/08 21:14:31 UTC

svn commit: r1707608 - in /tomcat/trunk/java/org/apache/coyote/http2: Stream.java StreamProcessor.java

Author: markt
Date: Thu Oct  8 19:14:31 2015
New Revision: 1707608

URL: http://svn.apache.org/viewvc?rev=1707608&view=rev
Log:
Implement some more Processor actions for HTTP/2.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Stream.java
    tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java

Modified: tomcat/trunk/java/org/apache/coyote/http2/Stream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Stream.java?rev=1707608&r1=1707607&r2=1707608&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Stream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Stream.java Thu Oct  8 19:14:31 2015
@@ -442,6 +442,10 @@ public class Stream extends AbstractStre
             return false;
         }
 
+        synchronized void reset() {
+            buffer.clear();
+        }
+
         synchronized boolean isReady() {
             if (getWindowSize() > 0 && handler.getWindowSize() > 0) {
                 return true;

Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1707608&r1=1707607&r2=1707608&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Thu Oct  8 19:14:31 2015
@@ -177,12 +177,38 @@ public class StreamProcessor extends Abs
             }
             break;
         }
+        case AVAILABLE: {
+            request.setAvailable(stream.getInputBuffer().available());
+            break;
+        }
+        case RESET: {
+            stream.getOutputBuffer().reset();
+            break;
+        }
+
+        // Error handling
         case IS_ERROR: {
             ((AtomicBoolean) param).set(getErrorState().isError());
             break;
         }
-        case AVAILABLE: {
-            request.setAvailable(stream.getInputBuffer().available());
+        case CLOSE_NOW: {
+            // No need to block further output. This is called by the error
+            // reporting valve if the response is already committed. It will
+            // flush any remaining response data before this call.
+            // Setting the error state will then cause this stream to be reset.
+            setErrorState(ErrorState.CLOSE_NOW,  null);
+            break;
+        }
+        case DISABLE_SWALLOW_INPUT: {
+            // NO-OP
+            // HTTP/2 has to swallow any input received to ensure that the flow
+            // control windows are correctly tracked.
+            break;
+        }
+        case END_REQUEST: {
+            // NO-OP
+            // This action is geared towards handling HTTP/1.1 expectations and
+            // keep-alive. Does not apply to HTTP/2 streams.
             break;
         }
 
@@ -358,11 +384,7 @@ public class StreamProcessor extends Abs
                     sm.getString("streamProcessor.httpupgrade.notsupported"));
 
         // Unimplemented / to review
-        case CLOSE_NOW:
-        case DISABLE_SWALLOW_INPUT:
-        case END_REQUEST:
         case REQ_SET_BODY_REPLAY:
-        case RESET:
             log.info("TODO: Implement [" + actionCode + "] for HTTP/2");
             break;
         }



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