From baa1a1c9cff1ae989d205c02b694288bb9cc54e2 Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Wed, 10 Aug 2016 15:22:12 -0400 Subject: [PATCH] Address review feedback from @jefferai --- http/sys_health.go | 4 ++++ http/sys_seal.go | 4 ++++ vault/cluster.go | 7 +++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/http/sys_health.go b/http/sys_health.go index 889cd3f6f1..da5922c5be 100644 --- a/http/sys_health.go +++ b/http/sys_health.go @@ -2,6 +2,7 @@ package http import ( "encoding/json" + "fmt" "net/http" "strconv" "time" @@ -121,6 +122,9 @@ func getSysHealth(core *vault.Core, r *http.Request) (int, *HealthResponse, erro if err != nil { return http.StatusInternalServerError, nil, err } + if cluster == nil { + return http.StatusInternalServerError, nil, fmt.Errorf("failed to fetch cluster details") + } clusterName = cluster.Name clusterID = cluster.ID } diff --git a/http/sys_seal.go b/http/sys_seal.go index 1551dc9da0..9a75f38443 100644 --- a/http/sys_seal.go +++ b/http/sys_seal.go @@ -159,6 +159,10 @@ func handleSysSealStatusRaw(core *vault.Core, w http.ResponseWriter, r *http.Req respondError(w, http.StatusInternalServerError, err) return } + if cluster == nil { + respondError(w, http.StatusInternalServerError, fmt.Errorf("failed to fetch cluster details")) + return + } clusterName = cluster.Name clusterID = cluster.ID } diff --git a/vault/cluster.go b/vault/cluster.go index b10604b8cc..b0a9b0c224 100644 --- a/vault/cluster.go +++ b/vault/cluster.go @@ -23,15 +23,14 @@ type Cluster struct { } // Cluster fetches the details of either local or global cluster based on the -// input. This method errors out when Vault is sealed. This function never -// returns a nil Cluster object. +// input. This method errors out when Vault is sealed. func (c *Core) Cluster() (*Cluster, error) { var cluster Cluster // Fetch the storage entry. This call fails when Vault is sealed. entry, err := c.barrier.Get(coreLocalClusterInfoPath) if err != nil { - return &cluster, err + return nil, err } if entry == nil { return &cluster, nil @@ -39,7 +38,7 @@ func (c *Core) Cluster() (*Cluster, error) { // Decode the cluster information if err = jsonutil.DecodeJSON(entry.Value, &cluster); err != nil { - return &cluster, fmt.Errorf("failed to decode cluster details: %v", err) + return nil, fmt.Errorf("failed to decode cluster details: %v", err) } // Set in config file