For loss detection tuning, if user agent is available, save it into quicsession. protected by --gfe2_reloadable_flag_quic_save_user_agent_in_quic_session.

PiperOrigin-RevId: 316688269
Change-Id: I2a25beeb081b38ae204a62c14459427341efa5e0
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc
index 057e86d..84ad6e1 100644
--- a/quic/core/tls_server_handshaker.cc
+++ b/quic/core/tls_server_handshaker.cc
@@ -299,6 +299,20 @@
     return false;
   }
   ProcessAdditionalTransportParameters(client_params);
+  if (GetQuicReloadableFlag(quic_save_user_agent_in_quic_session) &&
+      !session()->user_agent_id().has_value()) {
+    QUIC_RELOADABLE_FLAG_COUNT_N(quic_save_user_agent_in_quic_session, 2, 3);
+
+    if (client_params.user_agent_id.has_value()) {
+      session()->SetUserAgentId(client_params.user_agent_id.value());
+    } else if (client_params.google_quic_params) {
+      quiche::QuicheStringPiece user_agent_id;
+      client_params.google_quic_params->GetStringPiece(kUAID, &user_agent_id);
+      if (!user_agent_id.empty()) {
+        session()->SetUserAgentId(user_agent_id.data());
+      }
+    }
+  }
 
   return true;
 }