(n/a, not in use) add interfaces to set up peer address in QuicPacketCreator which the serialized packets are sent to through out the current call stack. No protected.
PiperOrigin-RevId: 328189072
Change-Id: I3c6d25aeb0f685891652519d62b92b1c0436d688
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index f842538..507a87a 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -2011,5 +2011,30 @@
return latched_hard_max_packet_length_ != 0;
}
+void QuicPacketCreator::SetDefaultPeerAddress(QuicSocketAddress address) {
+ if (!packet_.peer_address.IsInitialized()) {
+ packet_.peer_address = address;
+ return;
+ }
+ if (packet_.peer_address != address) {
+ FlushCurrentPacket();
+ packet_.peer_address = address;
+ }
+}
+
+QuicPacketCreator::ScopedPeerAddressContext::ScopedPeerAddressContext(
+ QuicPacketCreator* creator,
+ QuicSocketAddress address)
+ : creator_(creator), old_peer_address_(creator_->packet_.peer_address) {
+ QUIC_BUG_IF(!creator_->packet_.peer_address.IsInitialized())
+ << "Context is used before seralized packet's peer address is "
+ "initialized.";
+ creator_->SetDefaultPeerAddress(address);
+}
+
+QuicPacketCreator::ScopedPeerAddressContext::~ScopedPeerAddressContext() {
+ creator_->SetDefaultPeerAddress(old_peer_address_);
+}
+
#undef ENDPOINT // undef for jumbo builds
} // namespace quic