From 61f1324c27c661eaf14f2d4dd60b8a83abfe1e1f Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Fri, 29 Jul 2022 01:24:15 +0500 Subject: [PATCH] :card_file_box: Check loopback hostnames in memory client repository --- internal/client/repository/memory/memory_client.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/client/repository/memory/memory_client.go b/internal/client/repository/memory/memory_client.go index 8f91db3..e4d433f 100644 --- a/internal/client/repository/memory/memory_client.go +++ b/internal/client/repository/memory/memory_client.go @@ -3,6 +3,7 @@ package memory import ( "context" "fmt" + "net" "path" "sync" @@ -29,6 +30,18 @@ func (repo *memoryClientRepository) Create(ctx context.Context, client *domain.C } func (repo *memoryClientRepository) Get(ctx context.Context, id *domain.ClientID) (*domain.Client, error) { + // WARN(toby3d): more often than not, we will work from tests with + // non-existent clients, almost guaranteed to cause a resolution error. + ips, _ := net.LookupIP(id.URL().Hostname()) + + for _, ip := range ips { + if !ip.IsLoopback() { + continue + } + + return nil, client.ErrNotExist + } + src, ok := repo.store.Load(path.Join(DefaultPathPrefix, id.String())) if !ok { return nil, fmt.Errorf("cannot find client in store: %w", client.ErrNotExist)