From 253ec7eb6c9aa81a104a8fefde62562372fd8d2e Mon Sep 17 00:00:00 2001 From: markt Date: Fri, 24 Nov 2006 23:58:18 +0000 Subject: [PATCH] Port fix bug 41008. Enable POST to be used with indexed queries. Patch provided by Chris Halstead. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@479052 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/servlets/CGIServlet.java | 38 +++++++++-------------- webapps/docs/changelog.xml | 4 +++ 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/java/org/apache/catalina/servlets/CGIServlet.java b/java/org/apache/catalina/servlets/CGIServlet.java index 819000513..c37d99aaa 100644 --- a/java/org/apache/catalina/servlets/CGIServlet.java +++ b/java/org/apache/catalina/servlets/CGIServlet.java @@ -794,30 +794,22 @@ public final class CGIServlet extends HttpServlet { this.pathInfo = this.servletPath; } - // If request is HEAD or GET and Query String does not contain - // an unencoded "=" this is an indexed query. Parsed Query String - // forms command line parameters for cgi command. - if (!"GET".equals(req.getMethod()) && - !"HEAD".equals(req.getMethod())) - return; - - String qs = req.getQueryString(); - - if (qs == null || qs.indexOf("=")>0) - return; - - int delimIndex = 0; - int lastDelimIndex = 0; - delimIndex = qs.indexOf("+"); - - while (delimIndex >0) { - cmdLineParameters.add(URLDecoder.decode(qs.substring( - lastDelimIndex,delimIndex),parameterEncoding)); - lastDelimIndex = delimIndex + 1; - delimIndex = qs.indexOf("+",lastDelimIndex); + // If the request method is GET, POST or HEAD and the query string + // does not contain an unencoded "=" this is an indexed query. + // The parsed query string becomes the command line parameters + // for the cgi command. + if (req.getMethod().equals("GET") + || req.getMethod().equals("POST") + || req.getMethod().equals("HEAD")) { + String qs = req.getQueryString(); + if (qs != null && qs.indexOf("=") == -1) { + StringTokenizer qsTokens = new StringTokenizer(qs, "+"); + while ( qsTokens.hasMoreTokens() ) { + cmdLineParameters.add(URLDecoder.decode(qsTokens.nextToken(), + parameterEncoding)); + } + } } - cmdLineParameters.add(URLDecoder.decode(qs.substring( - lastDelimIndex),parameterEncoding)); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 18acb49d4..eb59227cf 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -41,6 +41,10 @@ 40929: Correct JavaDoc for StandardClassLoader. (markt) + 41008: Allow POST to be used for indexed queries with CGI + Servlet. Patch provided by Chris Halstead. (markt) + + Fix usage of print on the servlet output stream if the processor never used a writer (fhanik) -- 2.11.0