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 8a450ebafd..005e25762e 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 @@ -35,6 +35,7 @@ package sonia.scm.web.cgi; //~--- non-JDK imports -------------------------------------------------------- +import java.util.logging.Level; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -260,11 +261,11 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor try { - processIS = process.getInputStream(); processES = process.getErrorStream(); + processErrorStreamAsync(processES); processServletInput(process); + processIS = process.getInputStream(); processProcessInputStream(processIS); - processErrorStream(processES); waitForFinish(process); } finally @@ -273,6 +274,20 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor IOUtil.close(processES); } } + + private void processErrorStreamAsync( final InputStream errorStream ) + { + new Thread(new Runnable() { + @Override + public void run() { + try { + processErrorStream(errorStream); + } catch (IOException ex) { + logger.error( "could not read errorstream", ex ); + } + } + }).start(); + } /** * Method description