Index: net/quic/chromium/quic_chromium_client_session.h |
diff --git a/net/quic/chromium/quic_chromium_client_session.h b/net/quic/chromium/quic_chromium_client_session.h |
index b51fc440d57c5cfafe5e76936bb6f87e0088f1a7..35f0ee888a46772af09bfea390a90b869352c7bf 100644 |
--- a/net/quic/chromium/quic_chromium_client_session.h |
+++ b/net/quic/chromium/quic_chromium_client_session.h |
@@ -253,19 +253,25 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession |
QuicDisabledReason disabled_reason() const { return disabled_reason_; } |
+ // Attempts to migrate session when a write error is encountered. |
+ void MigrateSessionOnWriteError(); |
+ |
+ // Helper method that writes a packet on the new socket after |
+ // migration completes. If not null, the packet_ member is written, |
+ // otherwise a PING packet is written. |
+ void WriteToNewSocket(); |
+ |
// Migrates session onto new socket, i.e., starts reading from |
// |socket| in addition to any previous sockets, and sets |writer| |
// to be the new default writer. Returns true if socket was |
// successfully added to the session and the session was |
- // successfully migrated to using the new socket. If not null, |
- // |packet| is sent on the new network, else a PING frame is |
- // sent. Returns true on successful migration, or false if number of |
- // migrations exceeds kMaxReadersPerQuicSession. Takes ownership of |
- // |socket|, |reader|, and |writer|. |
+ // successfully migrated to using the new socket. Returns true on |
+ // successful migration, or false if number of migrations exceeds |
+ // kMaxReadersPerQuicSession. Takes ownership of |socket|, |reader|, |
+ // and |writer|. |
bool MigrateToSocket(std::unique_ptr<DatagramClientSocket> socket, |
std::unique_ptr<QuicChromiumPacketReader> reader, |
- std::unique_ptr<QuicChromiumPacketWriter> writer, |
- scoped_refptr<StringIOBuffer> packet); |
+ std::unique_ptr<QuicChromiumPacketWriter> writer); |
// Populates network error details for this session. |
void PopulateNetErrorDetails(NetErrorDetails* details); |
@@ -365,10 +371,14 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession |
// UMA histogram counters for streams pushed to this session. |
int streams_pushed_count_; |
int streams_pushed_and_claimed_count_; |
- // Return value from packet rewrite packet on new socket. Used |
- // during connection migration on socket write error. |
- int error_code_from_rewrite_; |
- bool use_error_code_from_rewrite_; |
+ // Stores packet that witnesses socket write error. This packet is |
+ // written to a new socket after migration completes. |
+ scoped_refptr<StringIOBuffer> packet_; |
+ // TODO(jri): Replace use of migration_pending_ sockets_.size(). |
+ // When a task is posted for MigrateSessionOnError, pass in |
+ // sockets_.size(). Then in MigrateSessionOnError, check to see if |
+ // the current sockets_.size() == the passed in value. |
+ bool migration_pending_; // True while migration is underway. |
base::WeakPtrFactory<QuicChromiumClientSession> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientSession); |