diff --git a/apps/routerconsole/jsp/flags.jsp b/apps/routerconsole/jsp/flags.jsp index 153b4c2f27c0be1ae96d4f06e1e5037ede252871..7148782e31bd00b0e7a0670d30994db52d8190fe 100644 --- a/apps/routerconsole/jsp/flags.jsp +++ b/apps/routerconsole/jsp/flags.jsp @@ -11,7 +11,6 @@ * flags.jsp?c=de => icons/flags/de.png * with headers set so the browser caches. */ -boolean rendered = false; String c = request.getParameter("c"); if (c != null && c.length() > 0) { java.io.OutputStream cout = response.getOutputStream(); @@ -38,17 +37,23 @@ if (c != null && c.length() > 0) { response.setContentType("image/png"); try { net.i2p.util.FileUtil.readFile(file, base, cout); - rendered = true; - } catch (java.io.IOException ioe) {} - if (rendered) - cout.close(); + } catch (java.io.IOException ioe) { + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving flags/" + c + ".png", ioe); + // Jetty doesn't log this + throw ioe; + } + } +} else { + /* + * Send a 403 instead of a 404, because the server sends error.jsp + * for 404 errors, complete with the summary bar, which would be + * a huge load for a page full of flags if the user didn't have the + * flags directory for some reason. + */ + response.sendError(403, "No flag specified"); } -/* - * Send a 403 instead of a 404, because the server sends error.jsp - * for 404 errors, complete with the summary bar, which would be - * a huge load for a page full of flags if the user didn't have the - * flags directory for some reason. - */ -if (!rendered) - response.sendError(403, "Flag not found"); %> \ No newline at end of file diff --git a/apps/routerconsole/jsp/viewhistory.jsp b/apps/routerconsole/jsp/viewhistory.jsp index 14ee0bbffa644ab63c34bef0ceebe8aba0d16e66..aa3ce4d545d2a5664bc145baa587f0533e22d567 100644 --- a/apps/routerconsole/jsp/viewhistory.jsp +++ b/apps/routerconsole/jsp/viewhistory.jsp @@ -11,6 +11,13 @@ String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsoluteP try { net.i2p.util.FileUtil.readFile("history.txt", base, response.getOutputStream()); } catch (java.io.IOException ioe) { - response.sendError(403, ioe.toString()); + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving history.txt", ioe); + // Jetty doesn't log this + throw ioe; + } } %> \ No newline at end of file diff --git a/apps/routerconsole/jsp/viewtheme.jsp b/apps/routerconsole/jsp/viewtheme.jsp index 814705e142516759209dfdd39ce8578054b1e3e2..ce1a6fe3807e065f58f6773f1e4afb8524130387 100644 --- a/apps/routerconsole/jsp/viewtheme.jsp +++ b/apps/routerconsole/jsp/viewtheme.jsp @@ -63,6 +63,13 @@ if (length > 0) try { net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream()); } catch (java.io.IOException ioe) { - response.sendError(403, ioe.toString()); + // prevent 'Committed' IllegalStateException from Jetty + if (!response.isCommitted()) { + response.sendError(403, ioe.toString()); + } else { + net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving " + uri, ioe); + // Jetty doesn't log this + throw ioe; + } } %> \ No newline at end of file