diff --git a/rpc/server.go b/rpc/server.go index bb44d4d..7a2146c 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -265,26 +265,31 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor, client *Clie return pCall } + var iParam interface{} + + if processor == nil { _, processor = GetProcessorType(args) } - inParamValue := reflect.New(reflect.ValueOf(args).Type().Elem()) - //args - //复制输入参数 - iParam := inParamValue.Interface() - bytes,err := processor.Marshal(args) - if err == nil { - err = processor.Unmarshal(bytes,iParam) - } + if args != nil { + inParamValue := reflect.New(reflect.ValueOf(args).Type().Elem()) + //args + //复制输入参数 + iParam = inParamValue.Interface() + bytes,err := processor.Marshal(args) + if err == nil { + err = processor.Unmarshal(bytes,iParam) + } - if err != nil { - pCall.Seq = 0 - pCall.Err = errors.New("RpcHandler " + handlerName + "."+serviceMethod+" deep copy inParam is error:" + err.Error()) - pCall.done <- pCall - log.SError(pCall.Err.Error()) + if err != nil { + pCall.Seq = 0 + pCall.Err = errors.New("RpcHandler " + handlerName + "."+serviceMethod+" deep copy inParam is error:" + err.Error()) + pCall.done <- pCall + log.SError(pCall.Err.Error()) - return pCall + return pCall + } } req := MakeRpcRequest(processor, 0, rpcMethodId, serviceMethod, noReply, nil) @@ -335,7 +340,7 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor, client *Clie } } - err = rpcHandler.PushRpcRequest(req) + err := rpcHandler.PushRpcRequest(req) if err != nil { ReleaseRpcRequest(req) pCall.Err = err