fix missing errorstream output in some situations

This commit is contained in:
Sebastian Sdorra
2012-05-08 22:12:51 +02:00
parent e85ff1317c
commit f6ff83dd88

View File

@@ -390,13 +390,11 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
private void execute(Process process) throws IOException private void execute(Process process) throws IOException
{ {
InputStream processIS = null; InputStream processIS = null;
InputStream processES = null;
ServletOutputStream servletOS = null; ServletOutputStream servletOS = null;
try try
{ {
processES = process.getErrorStream(); processErrorStreamAsync(process);
processErrorStreamAsync(processES);
processServletInput(process); processServletInput(process);
processIS = process.getInputStream(); processIS = process.getInputStream();
servletOS = response.getOutputStream(); servletOS = response.getOutputStream();
@@ -409,7 +407,6 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
finally finally
{ {
IOUtil.close(processIS); IOUtil.close(processIS);
IOUtil.close(processES);
IOUtil.close(servletOS); IOUtil.close(servletOS);
} }
} }
@@ -506,23 +503,31 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
* Method description * Method description
* *
* *
* @param errorStream *
* @param process
*/ */
private void processErrorStreamAsync(final InputStream errorStream) private void processErrorStreamAsync(final Process process)
{ {
new Thread(new Runnable() new Thread(new Runnable()
{ {
@Override @Override
public void run() public void run()
{ {
InputStream errorStream = null;
try try
{ {
errorStream = process.getErrorStream();
processErrorStream(errorStream); processErrorStream(errorStream);
} }
catch (IOException ex) catch (IOException ex)
{ {
logger.error("could not read errorstream", ex); logger.error("could not read errorstream", ex);
} }
finally
{
IOUtil.close(errorStream);
}
} }
}).start(); }).start();
} }