From 1e4988bf20b9ea0176b54c052b88b608bb09a3f2 Mon Sep 17 00:00:00 2001 From: Orne Brocaar Date: Mon, 11 Oct 2021 12:57:26 +0100 Subject: [PATCH] Do not lookup from errToCode map when error is of type slice. Closes #631. --- internal/api/helpers/errors.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/api/helpers/errors.go b/internal/api/helpers/errors.go index 4c8059e29..d77a4969e 100644 --- a/internal/api/helpers/errors.go +++ b/internal/api/helpers/errors.go @@ -1,6 +1,8 @@ package helpers import ( + "reflect" + "github.com/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -45,6 +47,13 @@ func ErrToRPCError(err error) error { return cause } + // Some error values (error returned by Otto) can not be hashed: + // https://github.com/brocaar/chirpstack-application-server/issues/631 + k := reflect.TypeOf(cause).Kind() + if k == reflect.Slice { + return grpc.Errorf(codes.Unknown, cause.Error()) + } + code, ok := errToCode[cause] if !ok { code = codes.Unknown