diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 94659a6bdf9bec8beb7ea4bb655f4fb6db82c545..c7e9b3e13fa795ed7910a39de532d6c3cc30f330 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -908,6 +908,7 @@ static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
         if (t->parsing.initial_window_update != 0) {
           grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
                                           update_global_window, t);
+          t->parsing.initial_window_update = 0;
         }
         /* handle higher level things */
         grpc_chttp2_publish_reads(&t->global, &t->parsing);