diff --git a/rpc/rpchandler.go b/rpc/rpchandler.go index cb55c2b..21ee0fa 100644 --- a/rpc/rpchandler.go +++ b/rpc/rpchandler.go @@ -235,8 +235,11 @@ func (handler *RpcHandler) HandlerRpcRequest(request *RpcRequest) { request.requestHandle(nil,rpcErr) } } + + if request.requestHandle == nil { + ReleaseRpcRequest(request) + } }() - defer ReleaseRpcRequest(request) if request.inputArgs!=nil { defer request.inputArgs.DoGc() } diff --git a/rpc/server.go b/rpc/server.go index ab732f0..9e8145e 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -164,6 +164,7 @@ func (agent *RpcAgent) Run() { if req.RpcRequestData.IsNoReply()==false { req.requestHandle = func(Returns interface{},Err RpcError){ agent.WriteResponse(processor,req.RpcRequestData.GetServiceMethod(),req.RpcRequestData.GetSeq(),Returns,Err) + ReleaseRpcRequest(req) } }