Include prefix in SSL_early_data_reason_string.

cl/340322863 added BoringSSL version-guarded code to call
SSL_early_data_reason_string, but QUIC expects the strings to include the
"ssl_early_data_" prefix. Since prefixing would be different from all the other
enum-to-string functions in BoringSSL, this change does that prefixing in the
QUIC code instead.

PiperOrigin-RevId: 341669885
Change-Id: Iefc1364b4846e769d7b281e1b4aa96d9666f7a55
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc
index 904a3c4..efb7b66 100644
--- a/quic/core/crypto/crypto_utils.cc
+++ b/quic/core/crypto/crypto_utils.cc
@@ -735,12 +735,12 @@
 }
 
 // static
-const char* CryptoUtils::EarlyDataReasonToString(
+std::string CryptoUtils::EarlyDataReasonToString(
     ssl_early_data_reason_t reason) {
 #if BORINGSSL_API_VERSION >= 12
   const char* reason_string = SSL_early_data_reason_string(reason);
   if (reason_string != nullptr) {
-    return reason_string;
+    return std::string("ssl_early_data_") + reason_string;
   }
 #else
   // TODO(davidben): Remove this logic once
diff --git a/quic/core/crypto/crypto_utils.h b/quic/core/crypto/crypto_utils.h
index 2191ae1..9195e3a 100644
--- a/quic/core/crypto/crypto_utils.h
+++ b/quic/core/crypto/crypto_utils.h
@@ -232,7 +232,7 @@
       HandshakeFailureReason reason);
 
   // Returns the name of an ssl_early_data_reason_t as a char*
-  static const char* EarlyDataReasonToString(ssl_early_data_reason_t reason);
+  static std::string EarlyDataReasonToString(ssl_early_data_reason_t reason);
 
   // Returns a hash of the serialized |message|.
   static std::string HashHandshakeMessage(const CryptoHandshakeMessage& message,