From fbe265fa787e4be9cb63c6bae2ef30b9400d9afc Mon Sep 17 00:00:00 2001
From: Simon Harrer <simon.harrer@gmail.com>
Date: Thu, 18 Jul 2013 10:11:04 -0400
Subject: [PATCH] Fixes findbugs warning - dereferencing null in exception case

---
 src/main/java/com/gitblit/GitBlitServer.java |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/gitblit/GitBlitServer.java b/src/main/java/com/gitblit/GitBlitServer.java
index 79d3d6b..ce05995 100644
--- a/src/main/java/com/gitblit/GitBlitServer.java
+++ b/src/main/java/com/gitblit/GitBlitServer.java
@@ -203,7 +203,7 @@
 
 		// conditionally configure the http connector
 		if (params.port > 0) {
-			Connector httpConnector = createConnector(params.useNIO, params.port);
+			Connector httpConnector = createConnector(params.useNIO, params.port, settings.getInteger(Keys.server.threadPoolSize, 50));
 			String bindInterface = settings.getString(Keys.server.httpBindInterface, null);
 			if (!StringUtils.isEmpty(bindInterface)) {
 				logger.warn(MessageFormat.format("Binding connector on port {0,number,0} to {1}",
@@ -262,7 +262,7 @@
 
 			if (serverKeyStore.exists()) {		        
 				Connector secureConnector = createSSLConnector(params.alias, serverKeyStore, serverTrustStore, params.storePassword,
-						caRevocationList, params.useNIO, params.securePort, params.requireClientCertificates);
+						caRevocationList, params.useNIO, params.securePort, settings.getInteger(Keys.server.threadPoolSize, 50), params.requireClientCertificates);
 				String bindInterface = settings.getString(Keys.server.httpsBindInterface, null);
 				if (!StringUtils.isEmpty(bindInterface)) {
 					logger.warn(MessageFormat.format(
@@ -410,19 +410,25 @@
 	 * 
 	 * @param useNIO
 	 * @param port
+	 * @param threadPoolSize
 	 * @return an http connector
 	 */
-	private Connector createConnector(boolean useNIO, int port) {
+	private Connector createConnector(boolean useNIO, int port, int threadPoolSize) {
 		Connector connector;
 		if (useNIO) {
 			logger.info("Setting up NIO SelectChannelConnector on port " + port);
 			SelectChannelConnector nioconn = new SelectChannelConnector();
 			nioconn.setSoLingerTime(-1);
-			nioconn.setThreadPool(new QueuedThreadPool(20));
+			if (threadPoolSize > 0) {
+				nioconn.setThreadPool(new QueuedThreadPool(threadPoolSize));
+			}
 			connector = nioconn;
 		} else {
 			logger.info("Setting up SocketConnector on port " + port);
 			SocketConnector sockconn = new SocketConnector();
+			if (threadPoolSize > 0) {
+				sockconn.setThreadPool(new QueuedThreadPool(threadPoolSize));
+			}
 			connector = sockconn;
 		}
 
@@ -444,11 +450,12 @@
 	 * @param caRevocationList
 	 * @param useNIO
 	 * @param port
+	 * @param threadPoolSize
 	 * @param requireClientCertificates
 	 * @return an https connector
 	 */
 	private Connector createSSLConnector(String certAlias, File keyStore, File clientTrustStore,
-			String storePassword, File caRevocationList, boolean useNIO, int port, 
+			String storePassword, File caRevocationList, boolean useNIO,  int port, int threadPoolSize, 
 			boolean requireClientCertificates) {
 		GitblitSslContextFactory factory = new GitblitSslContextFactory(certAlias,
 				keyStore, clientTrustStore, storePassword, caRevocationList);
@@ -462,11 +469,16 @@
 			} else {
 				factory.setWantClientAuth(true);
 			}
-			ssl.setThreadPool(new QueuedThreadPool(20));
+			if (threadPoolSize > 0) {
+				ssl.setThreadPool(new QueuedThreadPool(threadPoolSize));
+			}
 			connector = ssl;
 		} else {
 			logger.info("Setting up NIO SslSocketConnector on port " + port);
 			SslSocketConnector ssl = new SslSocketConnector(factory);
+			if (threadPoolSize > 0) {
+				ssl.setThreadPool(new QueuedThreadPool(threadPoolSize));
+			}
 			connector = ssl;
 		}
 		connector.setPort(port);

--
Gitblit v1.9.1