From 382d2c60dbf5d896bdd06e34fda8e5ae561133a5 Mon Sep 17 00:00:00 2001 From: Vjera Turk Date: Wed, 13 Nov 2024 18:58:23 +0100 Subject: [PATCH] TEMPORARY FIX: add check if header is missing in inAddErrorToResponseHeader --- internal/messaging/response_handler.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/messaging/response_handler.go b/internal/messaging/response_handler.go index ac46c927..2f0e19d4 100644 --- a/internal/messaging/response_handler.go +++ b/internal/messaging/response_handler.go @@ -140,6 +140,16 @@ func (h *evmResponseHandler) HandleRequest(_ context.Context, msgType types.Mess func (h *evmResponseHandler) AddErrorToResponseHeader(response protoreflect.ProtoMessage, errMessage string) { headerFieldDescriptor := response.ProtoReflect().Descriptor().Fields().ByName("header") headerReflectValue := response.ProtoReflect().Get(headerFieldDescriptor) + + if !headerReflectValue.IsValid() || !headerReflectValue.Message().IsValid() { + // TODO: @VjeraTurk support more than 1 version! Or ensure header is not nil elsewhere + // Initialize the header if it is not set + header := &typesv1.ResponseHeader{} + response.ProtoReflect().Set(headerFieldDescriptor, protoreflect.ValueOfMessage(header.ProtoReflect())) + addErrorToResponseHeaderV1(header, errMessage) + return + } + switch header := headerReflectValue.Message().Interface().(type) { case *typesv1.ResponseHeader: addErrorToResponseHeaderV1(header, errMessage)