Configure deadline with markdown.parseTimeout

Allow site admin to increase the deadline from the default of 2s
to higher values, allowing more time to parse complex documents.

Change-Id: I0189885c84424218f6ee83d7475cb4c9eac44889
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java b/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
index 7013918..91795bb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
@@ -31,6 +31,7 @@
 import org.eclipse.jgit.revwalk.RevTree;
 import org.eclipse.jgit.treewalk.TreeWalk;
 import org.eclipse.jgit.util.RawParseUtils;
+import org.joda.time.Duration;
 import org.pegdown.ast.RootNode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -89,10 +90,13 @@
 
   SanitizedContent render() {
     try {
+      Duration parseTimeout = ConfigUtil.getDuration(cfg, "markdown", null,
+          "parseTimeout", Duration.standardSeconds(2));
       int inputLimit = cfg.getInt("markdown", "inputLimit", 5 << 20);
       byte[] raw = reader.open(readmeId, Constants.OBJ_BLOB).getCachedBytes(inputLimit);
       String md = RawParseUtils.decode(raw);
-      RootNode root = GitilesMarkdown.parseFile(view, readmePath, md);
+      RootNode root =
+          GitilesMarkdown.parseFile(parseTimeout, view, readmePath, md);
       if (root == null) {
         return null;
       }