From 397bdd6b7bf96d0ecbb8642579df15c943b18fe0 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 4 Mar 2019 13:55:12 -0800 Subject: [PATCH] Fix a bug that was exposed but unrelated... --- test/cpp/end2end/test_service_impl.cc | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/test/cpp/end2end/test_service_impl.cc b/test/cpp/end2end/test_service_impl.cc index baebdbc8091..159ea33c2bc 100644 --- a/test/cpp/end2end/test_service_impl.cc +++ b/test/cpp/end2end/test_service_impl.cc @@ -125,6 +125,19 @@ void ServerTryCancelNonblocking(ServerContext* context) { gpr_log(GPR_INFO, "Server called TryCancel() to cancel the request"); } +void LoopUntilCancelled(Alarm* alarm, ServerContext* context, + experimental::ServerCallbackRpcController* controller) { + if (!context->IsCancelled()) { + alarm->experimental().Set( + gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), + gpr_time_from_micros(1000, GPR_TIMESPAN)), + [alarm, context, controller](bool) { + LoopUntilCancelled(alarm, context, controller); + }); + } else { + controller->Finish(Status::CANCELLED); + } +} } // namespace Status TestServiceImpl::Echo(ServerContext* context, const EchoRequest* request, @@ -290,18 +303,7 @@ void CallbackTestServiceImpl::EchoNonDelayed( gpr_log(GPR_INFO, "Server called TryCancel() to cancel the request"); // Now wait until it's really canceled - std::function recurrence = [this, context, controller, - &recurrence](bool) { - if (!context->IsCancelled()) { - alarm_.experimental().Set( - gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), - gpr_time_from_micros(1000, GPR_TIMESPAN)), - recurrence); - } else { - controller->Finish(Status::CANCELLED); - } - }; - recurrence(true); + LoopUntilCancelled(&alarm_, context, controller); return; }