This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-engine.git
The following commit(s) were added to refs/heads/master by this push:
new 3780cd8 fix: handle IOException internally and fix session ID lookup
(#77)
3780cd8 is described below
commit 3780cd850ad832eae04fc0e40f7f7fd2a5a9faa7
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Jun 2 16:36:58 2026 +0200
fix: handle IOException internally and fix session ID lookup (#77)
- SlingServletRequestAdapter: get session ID via getSession(false) instead
of delegating to getRequestedSessionId() to avoid cross-context issues
- RequestHistoryConsolePlugin: remove checked IOException/ServletException
from doGet/doPost signatures; catch and log IOExceptions internally
- Escape `key` with ResponseUtil.escapeXml in the table header to prevent
potential XSS
- Remove unused ServletException import
Co-authored-by: Maia <maia@noreply>
---
.../impl/adapter/SlingServletRequestAdapter.java | 3 +-
.../impl/console/RequestHistoryConsolePlugin.java | 110 +++++++++++----------
2 files changed, 61 insertions(+), 52 deletions(-)
diff --git
a/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
b/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
index 6f85e3a..1f3a52c 100644
---
a/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
+++
b/src/main/java/org/apache/sling/engine/impl/adapter/SlingServletRequestAdapter.java
@@ -150,7 +150,8 @@ public class SlingServletRequestAdapter extends
SlingJakartaHttpServletRequestWr
@Override
public String getRequestedSessionId() {
- return request.getRequestedSessionId();
+ final HttpSession session = request.getSession(false);
+ return session != null ? session.getId() : null;
}
@Override
diff --git
a/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
b/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
index 2297ea7..6c7726a 100644
---
a/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
+++
b/src/main/java/org/apache/sling/engine/impl/console/RequestHistoryConsolePlugin.java
@@ -19,7 +19,6 @@
package org.apache.sling.engine.impl.console;
import javax.servlet.Servlet;
-import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -119,65 +118,74 @@ public class RequestHistoryConsolePlugin extends
HttpServlet {
}
@Override
- protected void doGet(final HttpServletRequest req, final
HttpServletResponse resp)
- throws ServletException, IOException {
- // get all requests and select request to display
- final String key = req.getParameter(INDEX);
- final RequestInfo info = key == null ? null :
this.infoProvider.getRequestInfo(key);
- final List<RequestInfo> values = new ArrayList<>();
- for (final RequestInfo i : this.infoProvider.getRequestInfos()) {
- values.add(i);
- }
+ protected void doGet(final HttpServletRequest req, final
HttpServletResponse resp) {
+ try {
+ // get all requests and select request to display
+ final String key = req.getParameter(INDEX);
+ final RequestInfo info = key == null ? null :
this.infoProvider.getRequestInfo(key);
+ final List<RequestInfo> values = new ArrayList<>();
+ for (final RequestInfo i : this.infoProvider.getRequestInfos()) {
+ values.add(i);
+ }
- final PrintWriter pw = resp.getWriter();
+ final PrintWriter pw = resp.getWriter();
- if (this.infoProvider.isEnabled()) {
- pw.println("<p class='statline ui-state-highlight'>Recorded " +
values.size() + " requests (max: "
- + this.infoProvider.getMaxNumberOfInfos() + ")</p>");
- } else {
- pw.println("<p class='statline ui-state-highlight'>Request
Recording disabled</p>");
- }
+ if (this.infoProvider.isEnabled()) {
+ pw.println("<p class='statline ui-state-highlight'>Recorded "
+ values.size() + " requests (max: "
+ + this.infoProvider.getMaxNumberOfInfos() + ")</p>");
+ } else {
+ pw.println("<p class='statline ui-state-highlight'>Request
Recording disabled</p>");
+ }
- pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>");
- pw.println("<span style='float: left; margin-left: 1em'>Recent
Requests</span>");
- pw.println(
- "<form method='POST'><input type='hidden' name='clear'
value='clear'><input type='submit' value='Clear' class='ui-state-default
ui-corner-all'></form>");
- pw.println("</div>");
-
- printLinksTable(pw, values, key);
- pw.println("<br/>");
-
- if (info != null) {
-
- pw.println("<table class='nicetable ui-widget'>");
-
- // Links to other requests
- pw.println("<thead>");
- pw.println("<tr>");
- pw.printf(
- "<th class='ui-widget-header'>Request %s (%s %s) by %s -
RequestProgressTracker Info</th>%n",
- key,
- ResponseUtil.escapeXml(info.getMethod()),
- ResponseUtil.escapeXml(info.getPath()),
- ResponseUtil.escapeXml(info.getUserId()));
- pw.println("</tr>");
- pw.println("</thead>");
-
- pw.println("<tbody>");
-
- // Request Progress Tracker Info
- pw.println("<tr><td><pre>");
- pw.print(ResponseUtil.escapeXml(info.getLog()));
- pw.println("</pre></td></tr>");
- pw.println("</tbody></table>");
+ pw.println("<div class='ui-widget-header ui-corner-top
buttonGroup'>");
+ pw.println("<span style='float: left; margin-left: 1em'>Recent
Requests</span>");
+ pw.println(
+ "<form method='POST'><input type='hidden' name='clear'
value='clear'><input type='submit' value='Clear' class='ui-state-default
ui-corner-all'></form>");
+ pw.println("</div>");
+
+ printLinksTable(pw, values, key);
+ pw.println("<br/>");
+
+ if (info != null) {
+
+ pw.println("<table class='nicetable ui-widget'>");
+
+ // Links to other requests
+ pw.println("<thead>");
+ pw.println("<tr>");
+ pw.printf(
+ "<th class='ui-widget-header'>Request %s (%s %s) by %s
- RequestProgressTracker Info</th>%n",
+ ResponseUtil.escapeXml(key),
+ ResponseUtil.escapeXml(info.getMethod()),
+ ResponseUtil.escapeXml(info.getPath()),
+ ResponseUtil.escapeXml(info.getUserId()));
+ pw.println("</tr>");
+ pw.println("</thead>");
+
+ pw.println("<tbody>");
+
+ // Request Progress Tracker Info
+ pw.println("<tr><td><pre>");
+ pw.print(ResponseUtil.escapeXml(info.getLog()));
+ pw.println("</pre></td></tr>");
+ pw.println("</tbody></table>");
+ }
+ } catch (final IOException ioe) {
+ getServletContext().log("Unable to render request history console
output.", ioe);
+ resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
@Override
- protected void doPost(final HttpServletRequest req, final
HttpServletResponse resp) throws IOException {
+ protected void doPost(final HttpServletRequest req, final
HttpServletResponse resp) {
if (req.getParameter(CLEAR) != null) {
this.infoProvider.clear();
- resp.sendRedirect(req.getRequestURI());
+ try {
+ resp.sendRedirect(req.getRequestURI());
+ } catch (final IOException ioe) {
+ getServletContext().log("Unable to redirect after clearing
request history.", ioe);
+ resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
}
}