From f9b3a358dd0c04cce821f034be8eaf7143273601 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 11 Mar 2023 17:41:41 +0100 Subject: [PATCH] fix error on omited parameters, improve decoding errors --- pkg/jsonrpc/handler.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/jsonrpc/handler.go b/pkg/jsonrpc/handler.go index d6598fe..859413e 100644 --- a/pkg/jsonrpc/handler.go +++ b/pkg/jsonrpc/handler.go @@ -46,7 +46,7 @@ func (h *Handler) HandleRequest(ctx context.Context, s *session.Session, r io.Re dec.DisallowUnknownFields() err = dec.Decode(&req) if err != nil { - return respondError(w, "", ErrParse, fmt.Errorf("Parsing Request: %w", err)) + return respondError(w, "", ErrParse, fmt.Errorf("Decodeing Request: %w", err)) } if req.Jsonrpc != "2.0" { @@ -65,11 +65,13 @@ func (h *Handler) HandleRequest(ctx context.Context, s *session.Session, r io.Re p := reflect.New(method.inType) paramPointer := p.Interface() - dec = json.NewDecoder(bytes.NewReader(req.Params)) - dec.DisallowUnknownFields() - err = dec.Decode(paramPointer) - if err != nil { - return respondError(w, req.ID, ErrInvalidParams, fmt.Errorf("Parsing Request: %w", err)) + if len(req.Params) != 0 { + dec = json.NewDecoder(bytes.NewReader(req.Params)) + dec.DisallowUnknownFields() + err = dec.Decode(paramPointer) + if err != nil { + return respondError(w, req.ID, ErrInvalidParams, fmt.Errorf("Decoding Parameters: %w", err)) + } } params := make([]reflect.Value, 3)