Author: markt
Date: Wed Jul  8 17:10:54 2015
New Revision: 1689921

URL: http://svn.apache.org/r1689921
Log:
Don't disable error page support unless debug is set to 10 or more.

Modified:
    tomcat/tc8.0.x/trunk/   (props changed)
    tomcat/tc8.0.x/trunk/conf/web.xml
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/servlets/CGIServlet.java
    tomcat/tc8.0.x/trunk/webapps/docs/cgi-howto.xml
    tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc8.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jul  8 17:10:54 2015
@@ -1 +1 @@
-/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892
 
,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657592,1657607,1657609,1657682,1657
 
907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1
 
666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681701,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1682033,1682311,1682315,1682317,1682320,1682324,1682330,1682842,1684172,1684366,1684383,1684526-1684527,1684549-1684550,1685739,1685744,1685772,1685816,1685826,1685891,1687268,168734
 
0,1688563,1688841,1688878,1688885,1688896,1688901,1689345-1689346,1689357,1689656,1689675-1689677,1689679,1689687,1689825
+/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892
 
,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655438,1655441,1655454,1655558,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657592,1657607,1657609,1657682,1657
 
907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1
 
666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681701,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1682033,1682311,1682315,1682317,1682320,1682324,1682330,1682842,1684172,1684366,1684383,1684526-1684527,1684549-1684550,1685739,1685744,1685772,1685816,1685826,1685891,1687268,168734
 
0,1688563,1688841,1688878,1688885,1688896,1688901,1689345-1689346,1689357,1689656,1689675-1689677,1689679,1689687,1689825,1689918

Modified: tomcat/tc8.0.x/trunk/conf/web.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/conf/web.xml?rev=1689921&r1=1689920&r2=1689921&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/conf/web.xml (original)
+++ tomcat/tc8.0.x/trunk/conf/web.xml Wed Jul  8 17:10:54 2015
@@ -46,8 +46,12 @@
   <!--                       to 5 where 0 means no logging and 5 means      -->
   <!--                       maximum logging. Values of 10 or more mean     -->
   <!--                       maximum logging plus debug info added to the   -->
-  <!--                       HTTP response. Note that any value of 10 or    -->
-  <!--                       more has the same effect. [0]                  -->
+  <!--                       HTTP response. If an error occurs and debug is -->
+  <!--                       10 or more the standard error page mechanism   -->
+  <!--                       will be disabled and a response body with      -->
+  <!--                       debug information will be produced. Note that  -->
+  <!--                       any value of 10 or more has the same effect as -->
+  <!--                       a value of 10. [0]                             -->
   <!--                                                                      -->
   <!--   fileEncoding        Encoding to be used to read static resources   -->
   <!--                       [platform default]                             -->

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/servlets/CGIServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/servlets/CGIServlet.java?rev=1689921&r1=1689920&r2=1689921&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/servlets/CGIServlet.java 
(original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/servlets/CGIServlet.java Wed 
Jul  8 17:10:54 2015
@@ -242,8 +242,11 @@ public final class CGIServlet extends Ht
     /**
      * The debugging detail level for this servlet. Useful values range from 0
      * to 5 where 0 means no logging and 5 means maximum logging. Values of 10
-     * or more mean maximum logging plus debug info added to the HTTP response.
-     * Note that any value of 10 or more has the same effect.
+     * or more mean maximum logging and debug info added to the HTTP response.
+     * If an error occurs and debug is 10 or more the standard error page
+     * mechanism will be disabled and a response body with debug information
+     * will be produced. Note that any value of 10 or more has the same effect
+     * as a value of 10.
      */
     private int debug = 0;
 
@@ -587,7 +590,9 @@ public final class CGIServlet extends Ht
             cgi.setResponse(res);
             cgi.run();
         } else {
-            res.setStatus(404);
+            if (setStatus(res, 404)) {
+                return;
+            }
         }
 
         if (debug >= 10) {
@@ -627,6 +632,29 @@ public final class CGIServlet extends Ht
     }
 
 
+    /*
+     * Behaviour depends on the status code and the value of debug.
+     *
+     * Status < 400  - Always calls setStatus. Returns false. CGI servlet will
+     *                 provide the response body.
+     * Status >= 400 - Depends on debug
+     *   debug < 10    - Calls sendError(status), returns true. Standard error
+     *                   page mechanism will provide the response body.
+     *   debug >= 10   - Calls setStatus(status), return false. CGI servlet 
will
+     *                   provide the response body.
+     */
+    private boolean setStatus(HttpServletResponse response, int status) throws 
IOException {
+
+        if (status >= HttpServletResponse.SC_BAD_REQUEST && debug < 10) {
+            response.sendError(status);
+            return true;
+        } else {
+            response.setStatus(status);
+            return false;
+        }
+    }
+
+
     /**
      * Encapsulates the CGI environment and rules to derive
      * that environment from the servlet container and request information.
@@ -1640,6 +1668,12 @@ public final class CGIServlet extends Ht
                 cgiHeaderReader =
                     new BufferedReader(new InputStreamReader(cgiHeaderStream));
 
+                // Need to be careful here. If sendError() is called the
+                // response body should be provided by the standard error page
+                // process. But, if the output of the CGI process isn't read
+                // then that process can hang.
+                boolean skipBody = false;
+
                 while (isRunning) {
                     try {
                         //set headers
@@ -1650,14 +1684,14 @@ public final class CGIServlet extends Ht
                                 log("runCGI: addHeader(\"" + line + "\")");
                             }
                             if (line.startsWith("HTTP")) {
-                                
response.setStatus(getSCFromHttpStatusLine(line));
+                                skipBody = setStatus(response, 
getSCFromHttpStatusLine(line));
                             } else if (line.indexOf(":") >= 0) {
                                 String header =
                                     line.substring(0, 
line.indexOf(":")).trim();
                                 String value =
                                     line.substring(line.indexOf(":") + 
1).trim();
                                 if (header.equalsIgnoreCase("status")) {
-                                    
response.setStatus(getSCFromCGIStatusHeader(value));
+                                    skipBody = setStatus(response, 
getSCFromCGIStatusHeader(value));
                                 } else {
                                     response.addHeader(header , value);
                                 }
@@ -1673,7 +1707,7 @@ public final class CGIServlet extends Ht
                         cgiOutput = proc.getInputStream();
 
                         try {
-                            while ((bufRead = cgiOutput.read(bBuf)) != -1) {
+                            while (!skipBody && (bufRead = 
cgiOutput.read(bBuf)) != -1) {
                                 if (debug >= 4) {
                                     log("runCGI: output " + bufRead +
                                         " bytes of data");

Modified: tomcat/tc8.0.x/trunk/webapps/docs/cgi-howto.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/cgi-howto.xml?rev=1689921&r1=1689920&r2=1689921&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/webapps/docs/cgi-howto.xml (original)
+++ tomcat/tc8.0.x/trunk/webapps/docs/cgi-howto.xml Wed Jul  8 17:10:54 2015
@@ -99,8 +99,10 @@ directory being used as the search path.
 <li><strong>debug</strong> - Debugging detail level for messages logged
 by this servlet. Useful values range from 0 to 5 where 0 means no logging and 5
 means maximum logging. Values of 10 or more mean maximum logging plus debug 
info
-added to the HTTP response. Note that any value of 10 or more has the same
-effect. Default is <code>0</code>.</li>
+added to the HTTP response. If an error occurs and debug is 10 or more the
+standard error page mechanism will be disabled and a response body with debug
+information will be produced. Note that any value of 10 or more has the same
+effect as a value of 10. Default is <code>0</code>.</li>
 <li><strong>executable</strong> - The of the executable to be used to
 run the script. You may explicitly set this parameter to be an empty string
 if your script is itself executable (e.g. an exe file). Default is

Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml?rev=1689921&r1=1689920&r2=1689921&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Wed Jul  8 17:10:54 2015
@@ -58,6 +58,13 @@
         (Resources loaded from these locations are cached by the web 
application
         class loader.) (markt)
       </fix>
+      <add>
+        <bug>57741</bug>: Enable the CGI servlet to use the standard error page
+        mechanism. Note that if the CGI servlet&apos;s debug init parameter is
+        set to 10 or higher then the standard error page mechanism will be
+        bypassed and a debug response generated by the CGI servlet will be
+        returned instead. (markt)
+      </add>
       <fix>
         <bug>58086</bug>: Correct a regression in the fix for 58086 that
         incorrectly handled WAR URLs. (violetagg)



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to