From 76983332b3d67920dd8a3daaf854569276e6c284 Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Thu, 20 Jul 2023 16:30:05 -0500
Subject: [PATCH] clean

---
 contrib/jmux/mux.go      |  3 ---
 pkg/codec/json.go        | 19 +++++++++----------
 pkg/jrpctest/services.go |  2 +-
 pkg/server/server.go     |  6 ++----
 4 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/contrib/jmux/mux.go b/contrib/jmux/mux.go
index 14c214b..4102684 100644
--- a/contrib/jmux/mux.go
+++ b/contrib/jmux/mux.go
@@ -86,9 +86,6 @@ func (m *Mux) RegisterFunc(name string, rcvr any) error {
 		return fmt.Errorf("no service name for type %s", rcvrVal.Type().String())
 	}
 	cb := argreflect.NewCallback(reflect.ValueOf(nil), rcvrVal)
-	if cb == nil {
-		return fmt.Errorf("invalid function registeration for %s", name)
-	}
 	m.Mount(name, cb)
 	return nil
 }
diff --git a/pkg/codec/json.go b/pkg/codec/json.go
index 757cbd6..bbab047 100644
--- a/pkg/codec/json.go
+++ b/pkg/codec/json.go
@@ -79,18 +79,18 @@ func MarshalMessage(m *Message, enc *jx.Encoder) error {
 }
 
 func UnmarshalMessage(m *Message, dec *jx.Decoder) error {
-	err := dec.Obj(func(d *jx.Decoder, key string) error {
+	err := dec.Obj(func(d *jx.Decoder, key string) (err error) {
 		switch key {
 		default:
 			val, err := d.Raw()
 			if err != nil {
 				return err
 			}
-			xs := make(json.RawMessage, len(val))
-			copy(xs, val)
+			buf := bytes.NewBuffer(make(json.RawMessage, len(val)))
+			buf.Write(val)
 			m.ExtraFields = append(m.ExtraFields, RequestField{
 				Name:  key,
-				Value: xs,
+				Value: buf.Bytes(),
 			})
 		case "jsonrpc":
 			value, err := d.Str()
@@ -112,11 +112,7 @@ func UnmarshalMessage(m *Message, dec *jx.Decoder) error {
 				return err
 			}
 		case "method":
-			value, err := d.Str()
-			if err != nil {
-				return err
-			}
-			m.Method = value
+			m.Method, err = d.Str()
 		case "params":
 			val, err := d.Raw()
 			if err != nil {
@@ -152,7 +148,7 @@ func UnmarshalMessage(m *Message, dec *jx.Decoder) error {
 				return err
 			}
 		}
-		return nil
+		return err
 	})
 	if err != nil {
 		return err
@@ -269,6 +265,9 @@ func ReadMessage(dec *jx.Decoder) ([]*Message, bool) {
 			msg := new(Message)
 			//err := UnmarshalMessage(msg, d)
 			raw, err := d.Raw()
+			if err != nil {
+				raw = []byte{}
+			}
 			err = json.Unmarshal(raw, msg)
 			if err != nil {
 				msg = nil
diff --git a/pkg/jrpctest/services.go b/pkg/jrpctest/services.go
index eab9194..bdc7d54 100644
--- a/pkg/jrpctest/services.go
+++ b/pkg/jrpctest/services.go
@@ -82,7 +82,7 @@ func (s *testService) CallMeBack(ctx context.Context, method string, args []any)
 		return nil, errors.New("no client")
 	}
 	var result any
-	err := c.Do(nil, &result, method, args)
+	err := c.Do(context.Background(), &result, method, args)
 	return result, err
 }
 
diff --git a/pkg/server/server.go b/pkg/server/server.go
index eb83e0c..9200f06 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -164,10 +164,8 @@ func (s *Server) ServeCodec(pctx context.Context, remote codec.ReaderWriter) {
 	}()
 
 	go func() {
-		select {
-		case <-ctx.Done():
-			remote.Close()
-		}
+		<-ctx.Done()
+		remote.Close()
 	}()
 
 	for {
-- 
GitLab