summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/transport/ssh
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-03-19 12:34:00 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-10 18:58:09 -0400
commitfdf85cf245cddf121d35799637aaea8795db2ebd (patch)
tree4eaddab1fad982dc73fdbb6db4b465176db52657 /src/main/java/com/gitblit/transport/ssh
parenteec333e07be744bcc3a1fea4449000d48bd5234c (diff)
downloadgitblit-fdf85cf245cddf121d35799637aaea8795db2ebd.tar.gz
gitblit-fdf85cf245cddf121d35799637aaea8795db2ebd.zip
Fix exception handling for account with no public keys
Diffstat (limited to 'src/main/java/com/gitblit/transport/ssh')
-rw-r--r--src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java5
-rw-r--r--src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java8
2 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java b/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
index 5857a599..d2135142 100644
--- a/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
+++ b/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
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 @@ public abstract class IPublicKeyManager implements IManager {
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);
}
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java b/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
index 4430c68d..a54196da 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/KeysDispatcher.java
@@ -99,8 +99,12 @@ public class KeysDispatcher extends DispatchCommand {
@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();