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: [email protected]
For additional commands, e-mail: [email protected]