From 70ccf1208170b5345f8aaeeb1da7a8f735721a48 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 14 Apr 2011 21:42:55 +0200 Subject: [PATCH] added content-length and content-type header --- .../java/sonia/scm/web/cgi/CGIExecutor.java | 6 +++++ .../sonia/scm/web/cgi/DefaultCGIExecutor.java | 23 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/web/cgi/CGIExecutor.java b/scm-core/src/main/java/sonia/scm/web/cgi/CGIExecutor.java index ee6802d54c..a61e35c5dc 100644 --- a/scm-core/src/main/java/sonia/scm/web/cgi/CGIExecutor.java +++ b/scm-core/src/main/java/sonia/scm/web/cgi/CGIExecutor.java @@ -110,6 +110,12 @@ public interface CGIExecutor /** Field description */ public static final String ENV_SERVER_SOFTWARE = "SERVER_SOFTWARE"; + /** Field description */ + public static final String REPSONSE_HEADER_CONTENT_LENGTH = "Content-Length"; + + /** Field description */ + public static final String REPSONSE_HEADER_CONTENT_TYPE = "Content-Type"; + /** Field description */ public static final String RESPONSE_HEADER_HTTP_PREFIX = "HTTP"; 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 3f9aeedfa9..00298ae362 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 @@ -291,11 +291,30 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor String key = line.substring(0, k).trim(); String value = line.substring(k + 1).trim(); - if (RESPONSE_HEADER_LOCATION.equals(key)) + if (RESPONSE_HEADER_LOCATION.equalsIgnoreCase(key)) { response.sendRedirect(response.encodeRedirectURL(value)); } - else if (RESPONSE_HEADER_STATUS.equals(key)) + else if (REPSONSE_HEADER_CONTENT_TYPE.equalsIgnoreCase(key)) + { + response.setContentType(value); + } + else if (REPSONSE_HEADER_CONTENT_LENGTH.equalsIgnoreCase(key)) + { + try + { + response.setContentLength(Integer.parseInt(value)); + } + catch (NumberFormatException ex) + { + if (logger.isDebugEnabled()) + { + logger.debug( + "could not convert content-length header to integer", ex); + } + } + } + else if (RESPONSE_HEADER_STATUS.equalsIgnoreCase(key)) { String[] token = value.split(" "); int status = Integer.parseInt(token[0]);