Internal QUICHE change

PiperOrigin-RevId: 270719218
Change-Id: If2d4f9a6246777ef7920c276e41d97f7e4295631
diff --git a/quic/core/http/http_decoder.cc b/quic/core/http/http_decoder.cc
index e1fa36e..7fe994e 100644
--- a/quic/core/http/http_decoder.cc
+++ b/quic/core/http/http_decoder.cc
@@ -153,10 +153,13 @@
       continue_processing = visitor_->OnSettingsFrameStart(header_length);
       break;
     case static_cast<uint64_t>(HttpFrameType::PUSH_PROMISE):
+      // This edge case needs to be handled here, because ReadFramePayload()
+      // does not get called if |current_frame_length_| is zero.
       if (current_frame_length_ == 0) {
         RaiseError(QUIC_INVALID_FRAME_DATA, "Corrupt PUSH_PROMISE frame.");
         return false;
       }
+      continue_processing = visitor_->OnPushPromiseFrameStart(header_length);
       break;
     case static_cast<uint64_t>(HttpFrameType::GOAWAY):
       break;
@@ -239,10 +242,8 @@
         bool success = reader->ReadVarInt62(&push_id);
         DCHECK(success);
         remaining_frame_length_ -= current_push_id_length_;
-        if (!visitor_->OnPushPromiseFrameStart(
-                push_id,
-                current_length_field_length_ + current_type_field_length_,
-                current_push_id_length_)) {
+        if (!visitor_->OnPushPromiseFramePushId(push_id,
+                                                current_push_id_length_)) {
           continue_processing = false;
           current_push_id_length_ = 0;
           break;
@@ -259,10 +260,8 @@
 
         bool success = push_id_reader.ReadVarInt62(&push_id);
         DCHECK(success);
-        if (!visitor_->OnPushPromiseFrameStart(
-                push_id,
-                current_length_field_length_ + current_type_field_length_,
-                current_push_id_length_)) {
+        if (!visitor_->OnPushPromiseFramePushId(push_id,
+                                                current_push_id_length_)) {
           continue_processing = false;
           current_push_id_length_ = 0;
           break;