You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by am...@apache.org on 2001/07/11 23:15:50 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets CGIServlet.java
amyroh 01/07/11 14:15:50
Modified: catalina/src/share/org/apache/catalina/servlets
CGIServlet.java
Log:
Fixes the empty content_length problem -- patch submitted by Gene Wadleigh.
Revision Changes Path
1.2 +26 -15 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java
Index: CGIServlet.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CGIServlet.java 2001/06/01 00:20:19 1.1
+++ CGIServlet.java 2001/07/11 21:15:47 1.2
@@ -1,6 +1,6 @@
/*
- * CGIServlet.java $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.1 2001/06/01 00:20:19 amyroh Exp $
- * $Revision: 1.1 $, $Date: 2001/06/01 00:20:19 $
+ * CGIServlet.java $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.2 2001/07/11 21:15:47 amyroh Exp $
+ * $Revision: 1.2 $, $Date: 2001/07/11 21:15:47 $
*
* ====================================================================
*
@@ -281,7 +281,7 @@
*
* @author Martin T Dengler [root@martindengler.com]
* @author Amy Roh
- * @version $Revision: 1.1 $, $Date: 2001/06/01 00:20:19 $
+ * @version $Revision: 1.2 $, $Date: 2001/07/11 21:15:47 $
* @since Tomcat 4.0
*
*/
@@ -627,7 +627,7 @@
try {
ServletOutputStream out = res.getOutputStream();
out.println("<HTML><HEAD><TITLE>$Name: $</TITLE></HEAD>");
- out.println("<BODY>$Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.1 2001/06/01 00:20:19 amyroh Exp $<p>");
+ out.println("<BODY>$Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.2 2001/07/11 21:15:47 amyroh Exp $<p>");
if (cgiEnv.isValid()) {
out.println(cgiEnv.toString());
@@ -669,7 +669,7 @@
/** For future testing use only; does nothing right now */
public static void main(String[] args) {
- System.out.println("$Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.1 2001/06/01 00:20:19 amyroh Exp $");
+ System.out.println("$Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v 1.2 2001/07/11 21:15:47 amyroh Exp $");
}
@@ -685,7 +685,7 @@
* </p>
*
* @author Martin Dengler [root@martindengler.com]
- * @version $Revision: 1.1 $, $Date: 2001/06/01 00:20:19 $
+ * @version $Revision: 1.2 $, $Date: 2001/07/11 21:15:47 $
* @since Tomcat 4.0
*
*/
@@ -1083,8 +1083,10 @@
//NOOP per CGI specification section 11.2
} else if("HOST".equalsIgnoreCase(header)) {
String host = req.getHeader(header);
+ int idx = host.indexOf(":");
+ if(idx < 0) idx = host.length();
envp.put("HTTP_" + header.replace('-', '_'),
- host.substring(0, host.indexOf(":")));
+ host.substring(0, idx));
} else {
envp.put("HTTP_" + header.replace('-', '_'),
req.getHeader(header));
@@ -1305,7 +1307,7 @@
* </p>
*
* @author Martin Dengler [root@martindengler.com]
- * @version $Revision: 1.1 $, $Date: 2001/06/01 00:20:19 $
+ * @version $Revision: 1.2 $, $Date: 2001/07/11 21:15:47 $
*/
protected class CGIRunner {
@@ -1550,12 +1552,12 @@
}
}
- String postIn = getPostInput(params);
+ /*String postIn = getPostInput(params);
int contentLength = (postIn.length()
+ System.getProperty("line.separator").length());
if ("POST".equals(env.get("REQUEST_METHOD"))) {
env.put("CONTENT_LENGTH", new Integer(contentLength));
- }
+ }*/
StringBuffer perlCommand = new StringBuffer("perl ");
if (command.endsWith(".pl") || command.endsWith(".cgi")) {
@@ -1571,7 +1573,7 @@
* First -- parameters
* Second -- any remaining input
*/
- commandsStdIn = new BufferedOutputStream(proc.getOutputStream());
+ /*commandsStdIn = new BufferedOutputStream(proc.getOutputStream());
if (debug >= 2 ) {
log("runCGI stdin=[" + stdin + "], qs="
+ env.get("QUERY_STRING"));
@@ -1590,7 +1592,7 @@
/* assume if nothing is available after a time, that nothing is
* coming...
*/
- if (stdin.available() <= 0) {
+ /*if (stdin.available() <= 0) {
if (debug >= 2 ) {
log("runCGI stdin is NOT available ["
+ stdin.available() + "]");
@@ -1627,8 +1629,17 @@
}
}
commandsStdIn.flush();
- commandsStdIn.close();
-
+ commandsStdIn.close();*/
+ String sContentLength = (String) env.get("CONTENT_LENGTH");
+ if(!"".equals(sContentLength)) {
+ commandsStdIn = new BufferedOutputStream(proc.getOutputStream());
+ byte[] content = new byte[Integer.parseInt(sContentLength)];
+ stdin.read(content);
+ commandsStdIn.write(content);
+ commandsStdIn.flush();
+ commandsStdIn.close();
+ }
+
/* we want to wait for the process to exit, Process.waitFor()
* is useless in our situation; see
* http://developer.java.sun.com/developer/