From: fangguizhen <1297394526@qq.com> Date: Thu, 27 May 2021 16:11:52 +0000 (+0000) Subject: net/rpc: reduce the execution of reflect and decode X-Git-Tag: go1.19beta1~1029 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3d7392a08f00a7328af45c877dc0b3a431780c5b;p=gostls13.git net/rpc: reduce the execution of reflect and decode Change-Id: Ief4b5e1c2d1002392901124c0694afe58c271573 GitHub-Last-Rev: e3b8a60377becfc9c30178d7ae6131d7a4b82dde GitHub-Pull-Request: golang/go#46421 Reviewed-on: https://go-review.googlesource.com/c/go/+/323014 Reviewed-by: Brad Fitzpatrick Trust: Brad Fitzpatrick Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Trust: Ian Lance Taylor --- diff --git a/src/net/rpc/server.go b/src/net/rpc/server.go index f53ea75f9c..0b3e6e3c58 100644 --- a/src/net/rpc/server.go +++ b/src/net/rpc/server.go @@ -239,16 +239,16 @@ func (server *Server) register(rcvr any, name string, useName bool) error { s := new(service) s.typ = reflect.TypeOf(rcvr) s.rcvr = reflect.ValueOf(rcvr) - sname := reflect.Indirect(s.rcvr).Type().Name() - if useName { - sname = name + sname := name + if !useName { + sname = reflect.Indirect(s.rcvr).Type().Name() } if sname == "" { s := "rpc.Register: no service name for type " + s.typ.String() log.Print(s) return errors.New(s) } - if !token.IsExported(sname) && !useName { + if !useName && !token.IsExported(sname) { s := "rpc.Register: type " + sname + " is not exported" log.Print(s) return errors.New(s)