You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2004/10/14 10:14:47 UTC
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets CGIServlet.java
remm 2004/10/14 01:14:47
Modified: catalina/src/share/org/apache/catalina/servlets
CGIServlet.java
Log:
- Workaround for client socket exceptions occurring while running a CGI, which could cause the external process to hang.
- Please test this (I didn't).
Revision Changes Path
1.27 +20 -11 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java
Index: CGIServlet.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/CGIServlet.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- CGIServlet.java 28 Sep 2004 22:13:31 -0000 1.26
+++ CGIServlet.java 14 Oct 2004 08:14:47 -0000 1.27
@@ -1806,13 +1806,22 @@
(new InputStreamReader(proc.getInputStream()));
char[] cBuf = new char[1024];
- while ((bufRead = commandsStdOut.read(cBuf)) != -1) {
- if (servletContainerStdout != null) {
- if (debug >= 4) {
- log("runCGI: write(\"" +
- new String(cBuf, 0, bufRead) + "\")");
+ try {
+ while ((bufRead = commandsStdOut.read(cBuf)) != -1) {
+ if (servletContainerStdout != null) {
+ if (debug >= 4) {
+ log("runCGI: write(\"" +
+ new String(cBuf, 0, bufRead) + "\")");
+ }
+ servletContainerStdout.write(cBuf, 0, bufRead);
}
- servletContainerStdout.write(cBuf, 0, bufRead);
+ }
+ } finally {
+ // Attempt to consume any leftover byte if something bad happens,
+ // such as a socket disconnect on the servlet side; otherwise, the
+ // external process could hang
+ if (bufRead != -1) {
+ while ((bufRead = commandsStdOut.read(cBuf)) != -1) {}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org