From 65b805211d3e027475e222d1fb45d7713d86f95a Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 17 Feb 2018 18:31:13 +0000
Subject: [PATCH] Log the case when a user has no keys (but Open still
 succeeds)

---
 server/keystore.go | 2 +-
 server/server.go   | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/server/keystore.go b/server/keystore.go
index a84570ed..4fad6dbf 100644
--- a/server/keystore.go
+++ b/server/keystore.go
@@ -150,7 +150,7 @@ func (s *KeyStore) Open(ctx context.Context, username, password string, ttlSecon
 	}
 	if len(encKeys) == 0 {
 		// No keys found. Not an error.
-		return nil
+		return errNoKeys
 	}
 
 	// Naive and inefficient way of decrypting multiple keys: it
diff --git a/server/server.go b/server/server.go
index 681ca481..e65463b0 100644
--- a/server/server.go
+++ b/server/server.go
@@ -22,13 +22,16 @@ func (s *keyStoreServer) handleOpen(w http.ResponseWriter, r *http.Request) {
 	}
 
 	err := s.KeyStore.Open(r.Context(), req.Username, req.Password, req.TTL)
-	if err != nil {
+	if err == errNoKeys {
+		log.Printf("no keys found for %s", req.Username)
+	} else if err != nil {
 		log.Printf("Open(%s) error: %v", req.Username, err)
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
+	} else {
+		log.Printf("decrypted key for %s, ttl=%d", req.Username, req.TTL)
 	}
 
-	log.Printf("decrypted key for %s, ttl=%d", req.Username, req.TTL)
 	serverutil.EncodeJSONResponse(w, &emptyResponse)
 }
 
-- 
GitLab