James Moger
2013-01-13 9cc56a1f60eff2ce1db40b7078eab92e78602e1c
src/com/gitblit/GitBlit.java
@@ -85,6 +85,9 @@
import com.gitblit.Constants.FederationToken;
import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
import com.gitblit.fanout.FanoutNioService;
import com.gitblit.fanout.FanoutService;
import com.gitblit.fanout.FanoutSocketService;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationProposal;
import com.gitblit.models.FederationSet;
@@ -180,6 +183,8 @@
   private TimeZone timezone;
   
   private FileBasedConfig projectConfigs;
   private FanoutService fanoutService;
   public GitBlit() {
      if (gitblit == null) {
@@ -1371,8 +1376,8 @@
      if (config.isOutdated()) {
         // reload model
         logger.info(MessageFormat.format("Config for \"{0}\" has changed. Reloading model and updating cache.", repositoryName));
         model = loadRepositoryModel(repositoryName);
         removeFromCachedRepositoryList(repositoryName);
         model = loadRepositoryModel(model.name);
         removeFromCachedRepositoryList(model.name);
         addToCachedRepositoryList(model);
      } else {
         // update a few repository parameters 
@@ -1710,6 +1715,7 @@
      }
      model.HEAD = JGitUtils.getHEADRef(r);
      model.availableRefs = JGitUtils.getAvailableHeadTargets(r);
      model.sparkleshareId = JGitUtils.getSparkleshareId(r);
      r.close();
      
      if (model.origin != null && model.origin.startsWith("file://")) {
@@ -3133,6 +3139,32 @@
      }
      ContainerUtils.CVE_2007_0450.test();
      // startup Fanout PubSub service
      if (settings.getInteger(Keys.fanout.port, 0) > 0) {
         String bindInterface = settings.getString(Keys.fanout.bindInterface, null);
         int port = settings.getInteger(Keys.fanout.port, FanoutService.DEFAULT_PORT);
         boolean useNio = settings.getBoolean(Keys.fanout.useNio, true);
         int limit = settings.getInteger(Keys.fanout.connectionLimit, 0);
         if (useNio) {
            if (StringUtils.isEmpty(bindInterface)) {
               fanoutService = new FanoutNioService(port);
            } else {
               fanoutService = new FanoutNioService(bindInterface, port);
            }
         } else {
            if (StringUtils.isEmpty(bindInterface)) {
               fanoutService = new FanoutSocketService(port);
            } else {
               fanoutService = new FanoutSocketService(bindInterface, port);
            }
         }
         fanoutService.setConcurrentConnectionLimit(limit);
         fanoutService.setAllowAllChannelAnnouncements(false);
         fanoutService.start();
      }
   }
   
   private void logTimezone(String type, TimeZone zone) {
@@ -3206,6 +3238,9 @@
      scheduledExecutor.shutdownNow();
      luceneExecutor.close();
      gcExecutor.close();
      if (fanoutService != null) {
         fanoutService.stop();
      }
   }
   
   /**