diff --git a/rpc/rpc.go b/rpc/rpc.go index 660b225..c4911d0 100644 --- a/rpc/rpc.go +++ b/rpc/rpc.go @@ -25,6 +25,10 @@ type RpcResponse struct { type Responder = RequestHandler +func (r *Responder) IsInvalid() bool { + return reflect.ValueOf(*r).Pointer() == reflect.ValueOf(reqHandlerNull).Pointer() +} + //var rpcResponsePool sync.Pool var rpcRequestPool sync.Pool var rpcCallPool sync.Pool diff --git a/rpc/rpchandler.go b/rpc/rpchandler.go index 2a60825..622d098 100644 --- a/rpc/rpchandler.go +++ b/rpc/rpchandler.go @@ -253,7 +253,7 @@ func (handler *RpcHandler) HandlerRpcRequest(request *RpcRequest) { //单协程或非异步调用时直接使用预置对象 if handler.IsSingleCoroutine() && v.hasResponder==false { iParam = v.inParam - }else{ + }else if v.inParam != nil { iParam = reflect.New(v.inParamValue.Type().Elem()).Interface() }