diff --git a/test/cpp/end2end/connection_delay_injector.cc b/test/cpp/end2end/connection_delay_injector.cc index 630101084a8..06d85023609 100644 --- a/test/cpp/end2end/connection_delay_injector.cc +++ b/test/cpp/end2end/connection_delay_injector.cc @@ -51,10 +51,10 @@ class InjectedDelay { deadline_(deadline) { memcpy(&address_, addr, sizeof(grpc_resolved_address)); GRPC_CLOSURE_INIT(&timer_callback_, TimerCallback, this, nullptr); - auto duration = g_delay.load(); - deadline_ += duration; - grpc_timer_init(&timer_, grpc_core::ExecCtx::Get()->Now() + duration, - &timer_callback_); + grpc_core::Duration duration = g_delay.load(); + grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now(); + duration = std::min(duration, deadline_ - now); + grpc_timer_init(&timer_, now + duration, &timer_callback_); } ~InjectedDelay() { grpc_channel_args_destroy(channel_args_); }