| Index: net/quic/quic_stream_factory.cc
|
| diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
|
| index ea30b2e16e087c9c686e53ac1e0c9b936b17ffe7..040c563b0a0fe0cf407d3a94dbf1052ac76a3597 100644
|
| --- a/net/quic/quic_stream_factory.cc
|
| +++ b/net/quic/quic_stream_factory.cc
|
| @@ -100,6 +100,26 @@ QuicConfig InitializeQuicConfig(bool enable_pacing,
|
| return config;
|
| }
|
|
|
| +class ClientPacketWriterFactory : public QuicConnection::PacketWriterFactory {
|
| + public:
|
| + explicit ClientPacketWriterFactory(DatagramClientSocket* socket)
|
| + : socket_(socket) {}
|
| + virtual ~ClientPacketWriterFactory() {}
|
| +
|
| + virtual QuicPacketWriter* Create(QuicConnection* connection) const OVERRIDE;
|
| +
|
| + private:
|
| + DatagramClientSocket* socket_;
|
| +};
|
| +
|
| +QuicPacketWriter* ClientPacketWriterFactory::Create(
|
| + QuicConnection* connection) const {
|
| + scoped_ptr<QuicDefaultPacketWriter> writer(
|
| + new QuicDefaultPacketWriter(socket_));
|
| + writer->SetConnection(connection);
|
| + return writer.release();
|
| +}
|
| +
|
| } // namespace
|
|
|
| QuicStreamFactory::IpAliasKey::IpAliasKey() {}
|
| @@ -822,8 +842,7 @@ int QuicStreamFactory::CreateSession(
|
| return rv;
|
| }
|
|
|
| - scoped_ptr<QuicDefaultPacketWriter> writer(
|
| - new QuicDefaultPacketWriter(socket.get()));
|
| + ClientPacketWriterFactory packet_writer_factory(socket.get());
|
|
|
| if (!helper_.get()) {
|
| helper_.reset(new QuicConnectionHelper(
|
| @@ -834,11 +853,10 @@ int QuicStreamFactory::CreateSession(
|
| QuicConnection* connection = new QuicConnection(connection_id,
|
| addr,
|
| helper_.get(),
|
| - writer.get(),
|
| - false /* owns_writer */,
|
| + packet_writer_factory,
|
| + true /* owns_writer */,
|
| false /* is_server */,
|
| supported_versions_);
|
| - writer->SetConnection(connection);
|
| connection->set_max_packet_length(max_packet_length_);
|
|
|
| InitializeCachedStateInCryptoConfig(server_id, server_info);
|
| @@ -860,7 +878,7 @@ int QuicStreamFactory::CreateSession(
|
| }
|
|
|
| *session = new QuicClientSession(
|
| - connection, socket.Pass(), writer.Pass(), this,
|
| + connection, socket.Pass(), this,
|
| quic_crypto_client_stream_factory_, server_info.Pass(), server_id,
|
| config, &crypto_config_,
|
| base::MessageLoop::current()->message_loop_proxy().get(),
|
|
|