| Index: net/quic/quic_connection.cc
|
| diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
|
| index d4f1593616651437b1ad11ee4463f3df80c32f70..9228b91091071702c7287cca330ff7d654666069 100644
|
| --- a/net/quic/quic_connection.cc
|
| +++ b/net/quic/quic_connection.cc
|
| @@ -235,7 +235,8 @@ QuicConnection::QuicConnection(QuicConnectionId connection_id,
|
| peer_ip_changed_(false),
|
| peer_port_changed_(false),
|
| self_ip_changed_(false),
|
| - self_port_changed_(false) {
|
| + self_port_changed_(false),
|
| + weak_factory_(this) {
|
| if (!is_server_) {
|
| // Pacing will be enabled if the client negotiates it.
|
| sent_packet_manager_.MaybeEnablePacing();
|
| @@ -970,8 +971,11 @@ void QuicConnection::SendVersionNegotiationPacket() {
|
| packet_generator_.SerializeVersionNegotiationPacket(
|
| framer_.supported_versions()));
|
| WriteResult result = writer_->WritePacket(
|
| - version_packet->data(), version_packet->length(),
|
| - self_address().address(), peer_address());
|
| + version_packet->data(),
|
| + version_packet->length(),
|
| + self_address().address(),
|
| + peer_address(),
|
| + base::Callback<void(WriteResult wr)>());
|
|
|
| if (result.status == WRITE_STATUS_ERROR) {
|
| // We can't send an error as the socket is presumably borked.
|
| @@ -1390,10 +1394,13 @@ bool QuicConnection::WritePacket(QueuedPacket packet) {
|
| DCHECK(pending_write_.get() == NULL);
|
| pending_write_.reset(new QueuedPacket(packet));
|
|
|
| - WriteResult result = writer_->WritePacket(encrypted->data(),
|
| - encrypted->length(),
|
| - self_address().address(),
|
| - peer_address());
|
| + WriteResult result = writer_->WritePacket(
|
| + encrypted->data(),
|
| + encrypted->length(),
|
| + self_address().address(),
|
| + peer_address(),
|
| + base::Bind(base::IgnoreResult(&QuicConnection::OnPacketSent),
|
| + weak_factory_.GetWeakPtr()));
|
| if (result.error_code == ERR_IO_PENDING) {
|
| DCHECK_EQ(WRITE_STATUS_BLOCKED, result.status);
|
| }
|
|
|