James Moger
2014-03-19 fdf85cf245cddf121d35799637aaea8795db2ebd
Fix exception handling for account with no public keys
2 files modified
13 ■■■■ changed files
src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
@@ -27,6 +27,7 @@
import com.gitblit.manager.IManager;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
import com.google.common.cache.LoadingCache;
/**
@@ -64,6 +65,10 @@
                keyCache.invalidate(username);
            }
            return keyCache.get(username);
        } catch (InvalidCacheLoadException e) {
            if (e.getMessage() == null || !e.getMessage().contains("returned null")) {
                log.error(MessageFormat.format("failed to retrieve keys for {0}", username), e);
            }
        } catch (ExecutionException e) {
            log.error(MessageFormat.format("failed to retrieve keys for {0}", username), e);
        }
src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
@@ -99,8 +99,12 @@
        @Override
        public void run() {
            IPublicKeyManager keyManager = getContext().getGitblit().getPublicKeyManager();
            List<PublicKey> keys = keyManager.getKeys(getContext().getClient().getUsername());
            String username = getContext().getClient().getUsername();
            List<PublicKey> keys = keyManager.getKeys(username);
            if (keys == null) {
                stdout.println(String.format("%s has not added any public keys for ssh authentication", username));
                return;
            }
            for (PublicKey key : keys) {
                // two-steps - perhaps this could be improved
                Buffer buf = new Buffer();