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'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