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