Allow long header lengths in versions without IETF frames
This is safe without an explicit flag because QuicFramer::WriteIetfLongHeaderLength returns true when the version does not support long header lengths, which is the case for all versions other than v99.
http://google3/third_party/quic/core/quic_framer.cc?l=826&rcl=268972396
The goal of this change is to allow creating v49 which supports long header lengths but not IETF frames.
gfe-relnote: refactor without behavior change, protected by disabled v99 flag
PiperOrigin-RevId: 269738816
Change-Id: I5b69f7a0393e81856a7dc1efcd4a5baa1ebb8dab
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index db6b867..010d478 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -872,9 +872,6 @@
}
return writer.length();
}
- // TODO(dschinazi) if we enable long header lengths before v99, we need to
- // add support for fixing up lengths in QuicFramer::BuildDataPacket.
- DCHECK(!QuicVersionHasLongHeaderLengths(transport_version()));
size_t i = 0;
for (const QuicFrame& frame : frames) {
@@ -1009,6 +1006,10 @@
++i;
}
+ if (!WriteIetfLongHeaderLength(header, &writer, length_field_offset, level)) {
+ return 0;
+ }
+
return writer.length();
}