diff --git a/quic/quic_transport/quic_transport_client_session.cc b/quic/quic_transport/quic_transport_client_session.cc
index 5e2552f..032f61d 100644
--- a/quic/quic_transport/quic_transport_client_session.cc
+++ b/quic/quic_transport/quic_transport_client_session.cc
@@ -104,7 +104,7 @@
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
     return;
   }
-  if (client_indication_sent_) {
+  if (ready_) {
     QUIC_BUG << "Client indication may only be sent once.";
     connection()->CloseConnection(
         QUIC_INTERNAL_ERROR, "Attempted to send client indication twice",
@@ -121,6 +121,13 @@
   client_indication->WriteOrBufferData(SerializeClientIndication(),
                                        /*fin=*/true, nullptr);
   client_indication_sent_ = true;
+
+  // Don't set the ready bit if we closed the connection due to any error
+  // beforehand.
+  if (!connection()->connected()) {
+    return;
+  }
+  ready_ = true;
 }
 
 }  // namespace quic
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h
index 69e7d8e..32149df 100644
--- a/quic/quic_transport/quic_transport_client_session.h
+++ b/quic/quic_transport/quic_transport_client_session.h
@@ -21,11 +21,14 @@
 #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_protocol.h"
+#include "net/third_party/quiche/src/quic/quic_transport/quic_transport_session_interface.h"
 
 namespace quic {
 
 // A client session for the QuicTransport protocol.
-class QUIC_EXPORT QuicTransportClientSession : public QuicSession {
+class QUIC_EXPORT QuicTransportClientSession
+    : public QuicSession,
+      public QuicTransportSessionInterface {
  public:
   QuicTransportClientSession(QuicConnection* connection,
                              Visitor* owner,
@@ -50,10 +53,7 @@
     return crypto_stream_.get();
   }
 
-  bool IsSessionReady() const {
-    return IsCryptoHandshakeConfirmed() && client_indication_sent_ &&
-           connection()->connected();
-  }
+  bool IsSessionReady() const override { return ready_; }
 
   void OnCryptoHandshakeEvent(CryptoHandshakeEvent event) override;
 
@@ -78,6 +78,7 @@
   std::unique_ptr<QuicCryptoClientStream> crypto_stream_;
   url::Origin origin_;
   bool client_indication_sent_ = false;
+  bool ready_ = false;
 };
 
 }  // namespace quic
diff --git a/quic/quic_transport/quic_transport_server_session.cc b/quic/quic_transport/quic_transport_server_session.cc
index de4db0f..92cffcd 100644
--- a/quic/quic_transport/quic_transport_server_session.cc
+++ b/quic/quic_transport/quic_transport_server_session.cc
@@ -158,7 +158,12 @@
   if (!parser.Parse()) {
     return;
   }
-  client_indication_processed_ = true;
+  // Don't set the ready bit if we closed the connection due to any error
+  // beforehand.
+  if (!connection()->connected()) {
+    return;
+  }
+  ready_ = true;
 }
 
 }  // namespace quic
diff --git a/quic/quic_transport/quic_transport_server_session.h b/quic/quic_transport/quic_transport_server_session.h
index ee5cf69..7183ead 100644
--- a/quic/quic_transport/quic_transport_server_session.h
+++ b/quic/quic_transport/quic_transport_server_session.h
@@ -11,11 +11,14 @@
 #include "net/third_party/quiche/src/quic/core/quic_session.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_protocol.h"
+#include "net/third_party/quiche/src/quic/quic_transport/quic_transport_session_interface.h"
 
 namespace quic {
 
 // A server session for the QuicTransport protocol.
-class QUIC_EXPORT QuicTransportServerSession : public QuicSession {
+class QUIC_EXPORT QuicTransportServerSession
+    : public QuicSession,
+      public QuicTransportSessionInterface {
  public:
   class ServerVisitor {
    public:
@@ -46,10 +49,7 @@
     return crypto_stream_.get();
   }
 
-  bool IsSessionReady() const {
-    return IsCryptoHandshakeConfirmed() && client_indication_processed_ &&
-           connection()->connected();
-  }
+  bool IsSessionReady() const override { return ready_; }
 
   QuicStream* CreateIncomingStream(QuicStreamId id) override;
   QuicStream* CreateIncomingStream(PendingStream* /*pending*/) override {
@@ -94,7 +94,7 @@
   void ProcessClientIndication(QuicStringPiece indication);
 
   std::unique_ptr<QuicCryptoServerStream> crypto_stream_;
-  bool client_indication_processed_ = false;
+  bool ready_ = false;
   ServerVisitor* visitor_;
 };
 
diff --git a/quic/quic_transport/quic_transport_session_interface.h b/quic/quic_transport/quic_transport_session_interface.h
new file mode 100644
index 0000000..971fa5b
--- /dev/null
+++ b/quic/quic_transport/quic_transport_session_interface.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_SESSION_INTERFACE_H_
+#define QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_SESSION_INTERFACE_H_
+
+namespace quic {
+
+// Shared interface between QuicTransportClientSession and
+// QuicTransportServerSession.
+class QuicTransportSessionInterface {
+ public:
+  virtual ~QuicTransportSessionInterface() {}
+
+  // Indicates whether the client indication has been sent/received and the
+  // connection is thus ready to send/receive application data.  Note that the
+  // expectation for this API is that once it becomes true, it will never
+  // transition to false.
+  virtual bool IsSessionReady() const = 0;
+};
+
+}  // namespace quic
+
+#endif  // QUICHE_QUIC_QUIC_TRANSPORT_QUIC_TRANSPORT_SESSION_INTERFACE_H_
