diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java
index ba56bc7d90c..cbb9370c92c 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java
@@ -51,14 +51,23 @@ import org.eclipse.jetty.util.log.Logger;
*
* The following init parameters are used to configure this servlet:
*
- * - cgibinResourceBase
- Path to the cgi bin directory if set or it will default to the resource base of the context.
- * - resourceBase
- An alias for cgibinResourceBase.
- * - cgibinResourceBaseIsRelative
- If true then cgibinResourceBase is relative to the webapp (eg "WEB-INF/cgi")
- * - commandPrefix
- may be used to set a prefix to all commands passed to exec. This can be used on systems that need assistance to execute a
+ *
- cgibinResourceBase
+ * - Path to the cgi bin directory if set or it will default to the resource base of the context.
+ * - resourceBase
+ * - An alias for cgibinResourceBase.
+ * - cgibinResourceBaseIsRelative
+ * - If true then cgibinResourceBase is relative to the webapp (eg "WEB-INF/cgi")
+ * - commandPrefix
+ * - may be used to set a prefix to all commands passed to exec. This can be used on systems that need assistance to execute a
* particular file type. For example on windows this can be set to "perl" so that perl scripts are executed.
- * - Path
- passed to the exec environment as PATH.
- * - ENV_*
- used to set an arbitrary environment variable with the name stripped of the leading ENV_ and using the init parameter value
- * - useFullPath
- If true, the full URI path within the context is used for the exec command, otherwise a search is done for a partial URL that matches an exec Command
+ * - Path
+ * - passed to the exec environment as PATH.
+ * - ENV_*
+ * - used to set an arbitrary environment variable with the name stripped of the leading ENV_ and using the init parameter value
+ * - useFullPath
+ * - If true, the full URI path within the context is used for the exec command, otherwise a search is done for a partial URL that matches an exec Command
+ * - ignoreExitState
+ * - If true then do not act on a non-zero exec exit status")
*
*
*/
@@ -196,13 +205,9 @@ public class CGI extends HttpServlet
String info = "";
// Search docroot for a matching execCmd
- while (path.endsWith("/") && path.length() >= 0)
+ while ((path.endsWith("/") || !execCmd.exists()) && path.length() >= 0)
{
- if(!execCmd.exists())
- break;
-
int index = path.lastIndexOf('/');
-
path = path.substring(0,index);
info = pathInContext.substring(index,pathInContext.length());
execCmd = new File(_docRoot,path);
@@ -571,4 +576,4 @@ public class CGI extends HttpServlet
return envMap.toString();
}
}
-}
+}
\ No newline at end of file