diff --git a/pkg/server/server.go b/pkg/server/server.go index 047214703c2465385cfcaea39d257891bd1f0a8b..350bce9a94ab2689760a2529135f64a474174103 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -327,19 +327,23 @@ func (c *callResponder) send(ctx context.Context, env *callEnv) (err error) { } else { e.Raw(cast) } + case func(e *jx.Encoder) error: + err = cast(e) default: err = json.NewEncoder(e).EncodeWithOption(cast, func(eo *json.EncodeOption) { eo.DisableNewline = true }) - if err != nil { - return - } } } else { e.Null() } }) } + if env.err == nil && err != nil { + e.Field("error", func(e *jx.Encoder) { + jsonrpc.EncodeError(e, err) + }) + } }) // a json encoding error here is possibly fatal.... if err != nil {