Servlets: Close output stream on redirect,

instead of flushing buffer, to force commitment
This commit is contained in:
zzz
2018-03-09 21:02:00 +00:00
parent a2dbb21853
commit 4bcb1d27e4
11 changed files with 30 additions and 8 deletions

View File

@@ -290,7 +290,7 @@ class BasicServlet extends HttpServlet
return true; return true;
} }
response.setStatus(304); response.setStatus(304);
response.flushBuffer(); response.getOutputStream().close();
return false; return false;
} }
} }

View File

@@ -1370,7 +1370,7 @@ public class I2PSnarkServlet extends BasicServlet {
buf.append(p.replace("&", "&")); // no you don't html escape the redirect header buf.append(p.replace("&", "&")); // no you don't html escape the redirect header
resp.setHeader("Location", buf.toString()); resp.setHeader("Location", buf.toString());
resp.setStatus(303); resp.setStatus(303);
resp.flushBuffer(); resp.getOutputStream().close();
} }
/** @since 0.9 */ /** @since 0.9 */

View File

@@ -183,6 +183,6 @@ public class HostCheckHandler extends GzipHandler
// https://w3c.github.io/webappsec-upgrade-insecure-requests/ // https://w3c.github.io/webappsec-upgrade-insecure-requests/
httpResponse.setHeader("Vary", "Upgrade-Insecure-Requests"); httpResponse.setHeader("Vary", "Upgrade-Insecure-Requests");
httpResponse.setStatus(307); httpResponse.setStatus(307);
httpResponse.flushBuffer(); httpResponse.getOutputStream().close();
} }
} }

View File

@@ -65,7 +65,7 @@ public class CodedIconRendererServlet extends HttpServlet {
} }
} else { } else {
srs.setStatus(304); srs.setStatus(304);
srs.flushBuffer(); srs.getOutputStream().close();
} }
} else { } else {
//Binary data is not present but must be substituted by file on disk //Binary data is not present but must be substituted by file on disk

View File

@@ -9,6 +9,9 @@
if (!testIFrame) { if (!testIFrame) {
response.setStatus(307); response.setStatus(307);
response.setHeader("Location", "/susidns/index"); response.setHeader("Location", "/susidns/index");
// force commitment
response.getOutputStream().close();
return;
} else { } else {
%> %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

View File

@@ -24,6 +24,8 @@
// probably because restart or shutdown was clicked // probably because restart or shutdown was clicked
response.setStatus(307); response.setStatus(307);
response.setHeader("Location", "/graphs"); response.setHeader("Location", "/graphs");
// force commitment
response.getOutputStream().close();
return; return;
} }
%> %>

View File

@@ -9,6 +9,9 @@
if (!testIFrame) { if (!testIFrame) {
response.setStatus(307); response.setStatus(307);
response.setHeader("Location", "/i2ptunnel/"); response.setHeader("Location", "/i2ptunnel/");
// force commitment
response.getOutputStream().close();
return;
} else { } else {
%> %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

View File

@@ -1,6 +1,12 @@
<%@page contentType="text/plain"%>
<%@page pageEncoding="UTF-8"%>
<% <%
/*
* USE CAUTION WHEN EDITING
* Trailing whitespace OR NEWLINE on the last line will cause
* IllegalStateExceptions !!!
*
* Do not tag this file for translation.
*/
// //
// Redirect to either /home or /console, depending on configuration, // Redirect to either /home or /console, depending on configuration,
// while preserving any query parameters // while preserving any query parameters
@@ -24,4 +30,6 @@
if (query != null) if (query != null)
buf.append('?').append(query); buf.append('?').append(query);
response.setHeader("Location", buf.toString()); response.setHeader("Location", buf.toString());
// force commitment
response.getOutputStream().close();
%> %>

View File

@@ -10,6 +10,9 @@
if (!testIFrame || !embedApp) { if (!testIFrame || !embedApp) {
response.setStatus(307); response.setStatus(307);
response.setHeader("Location", "/i2psnark/"); response.setHeader("Location", "/i2psnark/");
// force commitment
response.getOutputStream().close();
return;
} else { } else {
%> %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

View File

@@ -10,6 +10,9 @@
if (!testIFrame || !embedApp) { if (!testIFrame || !embedApp) {
response.setStatus(307); response.setStatus(307);
response.setHeader("Location", "/susimail/susimail"); response.setHeader("Location", "/susimail/susimail");
// force commitment
response.getOutputStream().close();
return;
} else { } else {
%> %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

View File

@@ -2297,7 +2297,7 @@ public class WebMail extends HttpServlet
buf.append(q.replace("&amp;", "&")); // no you don't html escape the redirect header buf.append(q.replace("&amp;", "&")); // no you don't html escape the redirect header
resp.setHeader("Location", buf.toString()); resp.setHeader("Location", buf.toString());
resp.setStatus(303); resp.setStatus(303);
resp.flushBuffer(); resp.getOutputStream().close();
Debug.debug(Debug.DEBUG, "P-R-G to " + q); Debug.debug(Debug.DEBUG, "P-R-G to " + q);
} }