Fix Daemon start when sshd.listenAddress=off and host key doesn't exist
When a site is initialized with sshd.listenAddress=off, a ssh host key is not generated. The Daemon startup failed in that case because it tried to start the SshDaemon and the injection of a KeyPairProvider failed because the ssh host key didn't exist. Set the Daemon.sshd option to false also when sshd.listenAddress=off to ensure the same startup logic as when --disable-sshd option is used. Change-Id: Ia9a64f77ca4dc977aafa061a9b9a736db947d5df
This commit is contained in:
parent
33dab6bfce
commit
91205ae876
@ -50,6 +50,7 @@ import com.google.gerrit.server.config.AuthConfigModule;
|
||||
import com.google.gerrit.server.config.CanonicalWebUrlModule;
|
||||
import com.google.gerrit.server.config.CanonicalWebUrlProvider;
|
||||
import com.google.gerrit.server.config.GerritGlobalModule;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.config.MasterNodeStartup;
|
||||
import com.google.gerrit.server.contact.HttpContactStoreConnection;
|
||||
import com.google.gerrit.server.git.ReceiveCommitsExecutorModule;
|
||||
@ -65,6 +66,7 @@ import com.google.gerrit.server.schema.DataSourceProvider;
|
||||
import com.google.gerrit.server.schema.SchemaVersionCheck;
|
||||
import com.google.gerrit.server.ssh.NoSshKeyCache;
|
||||
import com.google.gerrit.server.ssh.NoSshModule;
|
||||
import com.google.gerrit.server.ssh.SshAddressesModule;
|
||||
import com.google.gerrit.solr.SolrIndexModule;
|
||||
import com.google.gerrit.sshd.SshHostKeyModule;
|
||||
import com.google.gerrit.sshd.SshKeyCacheImpl;
|
||||
@ -74,10 +76,12 @@ import com.google.gerrit.sshd.commands.SlaveCommandModule;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Key;
|
||||
import com.google.inject.Module;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.Stage;
|
||||
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.kohsuke.args4j.Option;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -269,6 +273,7 @@ public class Daemon extends SiteProgram {
|
||||
.setCfgInjector(cfgInjector);
|
||||
manager.add(dbInjector, cfgInjector, sysInjector);
|
||||
|
||||
sshd &= !sshdOff();
|
||||
if (sshd) {
|
||||
initSshd();
|
||||
}
|
||||
@ -285,6 +290,11 @@ public class Daemon extends SiteProgram {
|
||||
manager.stop();
|
||||
}
|
||||
|
||||
private boolean sshdOff() {
|
||||
Config cfg = cfgInjector.getInstance(Key.get(Config.class, GerritServerConfig.class));
|
||||
return new SshAddressesModule().getListenAddresses(cfg).isEmpty();
|
||||
}
|
||||
|
||||
private String myVersion() {
|
||||
return com.google.gerrit.common.Version.getVersion();
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ public class SshAddressesModule extends AbstractModule {
|
||||
@Provides
|
||||
@Singleton
|
||||
@SshListenAddresses
|
||||
List<SocketAddress> getListenAddresses(@GerritServerConfig Config cfg) {
|
||||
public List<SocketAddress> getListenAddresses(@GerritServerConfig Config cfg) {
|
||||
List<SocketAddress> listen = Lists.newArrayListWithExpectedSize(2);
|
||||
String[] want = cfg.getStringList("sshd", null, "listenaddress");
|
||||
if (want == null || want.length == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user