From 70b2f6e6795c4408ffc400f596138b4cb8ced9c4 Mon Sep 17 00:00:00 2001
From: Sean Young <sean.young@monax.io>
Date: Mon, 17 Sep 2018 17:06:13 +0100
Subject: [PATCH] nil pointer exception when name does not exist

Signed-off-by: Sean Young <sean.young@monax.io>
---
 integration/rpctransact/name_test.go | 7 ++++++-
 rpc/rpcquery/query_server.go         | 9 +++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/integration/rpctransact/name_test.go b/integration/rpctransact/name_test.go
index 3ba4a77f..8c3a3bd3 100644
--- a/integration/rpctransact/name_test.go
+++ b/integration/rpctransact/name_test.go
@@ -33,6 +33,10 @@ func TestNameTxSync(t *testing.T) {
 
 	qcli := rpctest.NewQueryClient(t, testConfig.RPC.GRPC.ListenAddress)
 	entry, err := qcli.GetName(context.Background(), &rpcquery.GetNameParam{
+		Name: "n'existe pas",
+	})
+	require.Error(t, err)
+	entry, err = qcli.GetName(context.Background(), &rpcquery.GetNameParam{
 		Name: name,
 	})
 	require.NoError(t, err)
@@ -40,6 +44,7 @@ func TestNameTxSync(t *testing.T) {
 	assert.Equal(t, data, entry.Data)
 	assert.Equal(t, inputAddress, entry.Owner)
 	assert.True(t, entry.Expires >= expiresIn, "expiry should be later than expiresIn")
+
 }
 
 func TestNameReg(t *testing.T) {
@@ -56,7 +61,7 @@ func TestNameReg(t *testing.T) {
 	txe := rpctest.UpdateName(t, tcli, inputAddress, name, data, numDesiredBlocks)
 
 	entry := txe.Result.NameEntry
-	assert.NotNil(t, entry, "name shoudl return")
+	assert.NotNil(t, entry, "name should return")
 	_, ok := txe.Envelope.Tx.Payload.(*payload.NameTx)
 	require.True(t, ok, "should be NameTx: %v", txe.Envelope.Tx.Payload)
 
diff --git a/rpc/rpcquery/query_server.go b/rpc/rpcquery/query_server.go
index bb5651da..97f6fa45 100644
--- a/rpc/rpcquery/query_server.go
+++ b/rpc/rpcquery/query_server.go
@@ -2,6 +2,7 @@ package rpcquery
 
 import (
 	"context"
+	"fmt"
 
 	"github.com/hyperledger/burrow/acm"
 	"github.com/hyperledger/burrow/acm/state"
@@ -67,8 +68,12 @@ func (qs *queryServer) ListAccounts(param *ListAccountsParam, stream Query_ListA
 }
 
 // Name registry
-func (qs *queryServer) GetName(ctx context.Context, param *GetNameParam) (*names.Entry, error) {
-	return qs.nameReg.GetName(param.Name)
+func (qs *queryServer) GetName(ctx context.Context, param *GetNameParam) (entry *names.Entry, err error) {
+	entry, err = qs.nameReg.GetName(param.Name)
+	if entry == nil && err == nil {
+		err = fmt.Errorf("name %s not found", param.Name)
+	}
+	return
 }
 
 func (qs *queryServer) ListNames(param *ListNamesParam, stream Query_ListNamesServer) error {
-- 
GitLab