From f6ff83dd888cd5961e32408f8fb10338f1b68b24 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 8 May 2012 22:12:51 +0200 Subject: [PATCH] fix missing errorstream output in some situations --- .../sonia/scm/web/cgi/DefaultCGIExecutor.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java b/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java index c96d981b29..03c20574cd 100644 --- a/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java +++ b/scm-webapp/src/main/java/sonia/scm/web/cgi/DefaultCGIExecutor.java @@ -390,13 +390,11 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor private void execute(Process process) throws IOException { InputStream processIS = null; - InputStream processES = null; ServletOutputStream servletOS = null; try { - processES = process.getErrorStream(); - processErrorStreamAsync(processES); + processErrorStreamAsync(process); processServletInput(process); processIS = process.getInputStream(); servletOS = response.getOutputStream(); @@ -409,7 +407,6 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor finally { IOUtil.close(processIS); - IOUtil.close(processES); IOUtil.close(servletOS); } } @@ -506,23 +503,31 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor * Method description * * - * @param errorStream + * + * @param process */ - private void processErrorStreamAsync(final InputStream errorStream) + private void processErrorStreamAsync(final Process process) { new Thread(new Runnable() { @Override public void run() { + InputStream errorStream = null; + try { + errorStream = process.getErrorStream(); processErrorStream(errorStream); } catch (IOException ex) { logger.error("could not read errorstream", ex); } + finally + { + IOUtil.close(errorStream); + } } }).start(); }