]> Cypherpunks repositories - gostls13.git/commitdiff
net/rpc: reduce the execution of reflect and decode
authorfangguizhen <1297394526@qq.com>
Thu, 27 May 2021 16:11:52 +0000 (16:11 +0000)
committerIan Lance Taylor <iant@golang.org>
Fri, 18 Mar 2022 00:39:23 +0000 (00:39 +0000)
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 <bradfitz@golang.org>
Trust: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Ian Lance Taylor <iant@golang.org>

src/net/rpc/server.go

index f53ea75f9ce7021c61e24b3a98fbdff1d9d6c75e..0b3e6e3c58bacda6c18aece0ebda6f9953c7a5b6 100644 (file)
@@ -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)