From d742f2893fba18d6c4a7b7e780fb4d79b8232a3b Mon Sep 17 00:00:00 2001 From: yang-g Date: Tue, 5 Dec 2017 17:34:48 -0800 Subject: [PATCH] Bug fix, use the last_sent ping time for next send --- .../ext/transport/chttp2/transport/writing.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index 204b5a77087..cfaa0d0f703 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -69,14 +69,15 @@ static void maybe_initiate_ping(grpc_exec_ctx* exec_ctx, return; } grpc_millis now = grpc_exec_ctx_now(exec_ctx); + + grpc_millis next_allowed_ping_interval = + (t->keepalive_permit_without_calls == 0 && + grpc_chttp2_stream_map_size(&t->stream_map) == 0) + ? 7200 * GPR_MS_PER_SEC + : t->ping_policy.min_sent_ping_interval_without_data; grpc_millis next_allowed_ping = - t->ping_state.last_ping_sent_time + - t->ping_policy.min_sent_ping_interval_without_data; - if (t->keepalive_permit_without_calls == 0 && - grpc_chttp2_stream_map_size(&t->stream_map) == 0) { - next_allowed_ping = - t->ping_recv_state.last_ping_recv_time + 7200 * GPR_MS_PER_SEC; - } + t->ping_state.last_ping_sent_time + next_allowed_ping_interval; + if (next_allowed_ping > now) { /* not enough elapsed time between successive pings */ if (grpc_http_trace.enabled() || grpc_bdp_estimator_trace.enabled()) {