diff --git a/quic/core/crypto/tls_connection.cc b/quic/core/crypto/tls_connection.cc
index 7a66e2f..f822d96 100644
--- a/quic/core/crypto/tls_connection.cc
+++ b/quic/core/crypto/tls_connection.cc
@@ -106,6 +106,11 @@
         ssl(), ssl_config_.signing_algorithm_prefs->data(),
         ssl_config_.signing_algorithm_prefs->size());
   }
+  if (ssl_config.disable_ticket_support.has_value()) {
+    if (*ssl_config.disable_ticket_support) {
+      SSL_set_options(ssl(), SSL_OP_NO_TICKET);
+    }
+  }
 }
 
 void TlsConnection::EnableInfoCallback() {
diff --git a/quic/core/http/quic_server_session_base.cc b/quic/core/http/quic_server_session_base.cc
index 69d6cb4..6c1d617 100644
--- a/quic/core/http/quic_server_session_base.cc
+++ b/quic/core/http/quic_server_session_base.cc
@@ -286,6 +286,12 @@
   QUICHE_DCHECK(crypto_config_ && crypto_config_->proof_source());
 
   QuicSSLConfig ssl_config = QuicSpdySession::GetSSLConfig();
+
+  if (quic_tls_disable_resumption_refactor()) {
+    ssl_config.disable_ticket_support =
+        GetQuicFlag(FLAGS_quic_disable_server_tls_resumption);
+  }
+
   if (!GetQuicReloadableFlag(quic_tls_set_signature_algorithm_prefs) ||
       !crypto_config_ || !crypto_config_->proof_source()) {
     return ssl_config;
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index aa51c87..6ead891 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -93,6 +93,8 @@
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_dispatcher_support_multiple_cid_per_connection_v2, true)
 // If true, receiving server push stream will trigger QUIC connection close.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_decline_server_push_stream, true)
+// If true, refactor how QUIC TLS server disables resumption. No behavior change.
+QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_tls_disable_resumption_refactor, false)
 // If true, require handshake confirmation for QUIC connections, functionally disabling 0-rtt handshakes.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, false)
 // If true, reset per packet state before processing undecryptable packets.
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index 9eb7bd1..76e4805 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -623,6 +623,11 @@
 
   virtual QuicSSLConfig GetSSLConfig() const { return QuicSSLConfig(); }
 
+  // Get latched flag value.
+  bool quic_tls_disable_resumption_refactor() const {
+    return quic_tls_disable_resumption_refactor_;
+  }
+
  protected:
   using StreamMap =
       absl::flat_hash_map<QuicStreamId, std::unique_ptr<QuicStream>>;
@@ -954,6 +959,9 @@
 
   // Whether BoringSSL randomizes the order of TLS extensions.
   bool permutes_tls_extensions_ = false;
+
+  const bool quic_tls_disable_resumption_refactor_ =
+      GetQuicReloadableFlag(quic_tls_disable_resumption_refactor);
 };
 
 }  // namespace quic
diff --git a/quic/core/tls_server_handshaker.cc b/quic/core/tls_server_handshaker.cc
index dcd7ea3..4605eaa 100644
--- a/quic/core/tls_server_handshaker.cc
+++ b/quic/core/tls_server_handshaker.cc
@@ -211,8 +211,12 @@
   }
   SSL_set_quic_use_legacy_codepoint(ssl(), use_legacy_extension);
 
-  if (GetQuicFlag(FLAGS_quic_disable_server_tls_resumption)) {
-    SSL_set_options(ssl(), SSL_OP_NO_TICKET);
+  if (!session->quic_tls_disable_resumption_refactor()) {
+    if (GetQuicFlag(FLAGS_quic_disable_server_tls_resumption)) {
+      SSL_set_options(ssl(), SSL_OP_NO_TICKET);
+    }
+  } else {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_tls_disable_resumption_refactor);
   }
 
   if (GetQuicReloadableFlag(quic_trace_ssl_events) &&
diff --git a/quic/core/tls_server_handshaker_test.cc b/quic/core/tls_server_handshaker_test.cc
index 2478d8f..b6ab9de 100644
--- a/quic/core/tls_server_handshaker_test.cc
+++ b/quic/core/tls_server_handshaker_test.cc
@@ -566,7 +566,7 @@
   InitializeServerWithFakeProofSourceHandle();
 
   // Disable early data.
-  server_session_->ssl_config()->early_data_enabled = false;
+  server_session_->set_early_data_enabled(false);
 
   server_handshaker_->SetupProofSourceHandle(
       /*select_cert_action=*/FakeProofSourceHandle::Action::DELEGATE_SYNC,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 39320e1..d513d0a 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -1215,14 +1215,22 @@
 
   MockQuicCryptoServerStreamHelper* helper() { return &helper_; }
 
-  QuicSSLConfig GetSSLConfig() const override { return ssl_config_; }
+  QuicSSLConfig GetSSLConfig() const override {
+    QuicSSLConfig ssl_config = QuicServerSessionBase::GetSSLConfig();
+    if (early_data_enabled_.has_value()) {
+      ssl_config.early_data_enabled = *early_data_enabled_;
+    }
+    return ssl_config;
+  }
 
-  QuicSSLConfig* ssl_config() { return &ssl_config_; }
+  void set_early_data_enabled(bool enabled) { early_data_enabled_ = enabled; }
 
  private:
   MockQuicSessionVisitor visitor_;
   MockQuicCryptoServerStreamHelper helper_;
-  QuicSSLConfig ssl_config_;
+  // If not nullopt, override the early_data_enabled value from base class'
+  // ssl_config.
+  absl::optional<bool> early_data_enabled_;
 };
 
 // A test implementation of QuicClientPushPromiseIndex::Delegate.
