Author: markt
Date: Fri Aug 12 07:47:29 2016
New Revision: 1756105

URL: http://svn.apache.org/viewvc?rev=1756105&view=rev
Log:
Fix post refactoring test failures.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java?rev=1756105&r1=1756104&r2=1756105&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java Fri Aug 
12 07:47:29 2016
@@ -245,6 +245,15 @@ public class Http11OutputBuffer implemen
 
 
     /**
+     * Reset the header buffer if an error occurs during the writing of the
+     * headers so the error response can be written.
+     */
+    void resetHeaderBuffer() {
+        pos = 0;
+    }
+
+
+    /**
      * Recycle the output buffer. This should be called when closing the
      * connection.
      */

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1756105&r1=1756104&r2=1756105&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Fri Aug 12 
07:47:29 2016
@@ -1501,9 +1501,6 @@ public class Http11Processor extends Abs
             
headers.addValue(Constants.CONNECTION).setString(Constants.KEEPALIVE);
         }
 
-        // Build the response header
-        outputBuffer.sendStatus();
-
         // Add server header
         if (server == null) {
             if (serverRemoveAppProvidedValues) {
@@ -1514,11 +1511,22 @@ public class Http11Processor extends Abs
             headers.setValue("Server").setString(server);
         }
 
-        int size = headers.size();
-        for (int i = 0; i < size; i++) {
-            outputBuffer.sendHeader(headers.getName(i), headers.getValue(i));
+        // Build the response header
+        try {
+            outputBuffer.sendStatus();
+
+            int size = headers.size();
+            for (int i = 0; i < size; i++) {
+                outputBuffer.sendHeader(headers.getName(i), 
headers.getValue(i));
+            }
+            outputBuffer.endHeaders();
+        } catch (Throwable t) {
+            ExceptionUtils.handleThrowable(t);
+            // If something goes wrong, reset the header buffer so the error
+            // response can be written instead.
+            outputBuffer.resetHeaderBuffer();
+            throw t;
         }
-        outputBuffer.endHeaders();
 
         outputBuffer.commit();
     }



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

Reply via email to