diff options
Diffstat (limited to 'src/main/java/com/gitblit/servlet/RawServlet.java')
-rw-r--r-- | src/main/java/com/gitblit/servlet/RawServlet.java | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/src/main/java/com/gitblit/servlet/RawServlet.java b/src/main/java/com/gitblit/servlet/RawServlet.java index 1d2724bc..81793bc7 100644 --- a/src/main/java/com/gitblit/servlet/RawServlet.java +++ b/src/main/java/com/gitblit/servlet/RawServlet.java @@ -166,23 +166,14 @@ public class RawServlet extends HttpServlet { } // determine repository and resource from url - String repository = ""; + String repository = path; Repository r = null; - int offset = 0; - while (r == null) { - int slash = path.indexOf('/', offset); - if (slash == -1) { - repository = path; - } else { - repository = path.substring(0, slash); - } - offset = ( slash + 1 ); + int terminator = repository.length(); + do { + repository = repository.substring(0, terminator); r = repositoryManager.getRepository(repository, false); - if (repository.equals(path)) { - // either only repository in url or no repository found - break; - } - } + terminator = repository.lastIndexOf('/'); + } while (r == null && terminator > -1 ); ServletContext context = request.getSession().getServletContext(); @@ -242,7 +233,7 @@ public class RawServlet extends HttpServlet { try { String ext = StringUtils.getFileExtension(file).toLowerCase(); - String contentType = quickContentTypes.get(ext); + String contentType = file.charAt(0) == '.' ? "text/plain" : quickContentTypes.get(ext); if (contentType == null) { List<String> exts = runtimeManager.getSettings().getStrings(Keys.web.prettyPrintExtensions); |