Land Recent QUIC Changes

Removed the tab characters.

Fixed review comments from rch.

[email protected]

QUIC - pending changelist - Use static for congestion manager constants.

Merger internal change: 43867480

[email protected]

QUIC - cleanup of stats

Merge internal change: 43864412

[email protected]

QUIC - Add two new methods to QuicConnectionHelper to abstarct away differences between server and chromium.

Merge internal change: 43850438

[email protected]

QUIC - Start tracking number of rejected connections and connection close.

Merge internal change: 43846131

[email protected]

QUIC - Temporary work around for bug with server tests.

Merge internal change: 43845688

[email protected]

QUIC - Bugfix; don't queue ConnectionClosePackets and don't process incoming packets if the connection is closed.

Merge internal change: 43813759

[email protected]

QUIC - More cleanups

Merge internal change: 43805954

[email protected]

QUIC Crypto - Change CryptoHandshakeMessage to a class.

Merge internal change: 43798895

[email protected], [email protected]

QUIC crypto: cleanup between steps 4 and 5.

Merge internal change: 43791096

[email protected], [email protected]

QUIC crypto: steps 3 and 4 from the plan.

Merge internal change: 43787806

[email protected], [email protected]

QUIC - Improved sendalarm accuracy

Merge internal change: 43785455

[email protected]


Review URL: https://chromiumcodereview.appspot.com/12863007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190594 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/quic/quic_connection_helper.cc b/net/quic/quic_connection_helper.cc
index 2d1fecf5..a0e3204 100644
--- a/net/quic/quic_connection_helper.cc
+++ b/net/quic/quic_connection_helper.cc
@@ -9,6 +9,7 @@
 #include "base/task_runner.h"
 #include "base/time.h"
 #include "net/base/io_buffer.h"
+#include "net/base/net_errors.h"
 #include "net/quic/quic_utils.h"
 
 namespace net {
@@ -69,6 +70,16 @@
   return rv;
 }
 
+bool QuicConnectionHelper::IsWriteBlockedDataBuffered() {
+  // Chrome sockets' Write() methods buffer the data until the Write is
+  // permitted.
+  return true;
+}
+
+bool QuicConnectionHelper::IsWriteBlocked(int error) {
+  return error == ERR_IO_PENDING;
+}
+
 void QuicConnectionHelper::SetRetransmissionAlarm(QuicTime::Delta delay) {
   if (!retransmission_alarm_registered_) {
     task_runner_->PostDelayedTask(
@@ -95,13 +106,14 @@
   ack_alarm_time_ = QuicTime::Zero();
 }
 
-void QuicConnectionHelper::SetSendAlarm(QuicTime::Delta delay) {
+void QuicConnectionHelper::SetSendAlarm(QuicTime alarm_time) {
   send_alarm_registered_ = true;
   task_runner_->PostDelayedTask(
       FROM_HERE,
       base::Bind(&QuicConnectionHelper::OnSendAlarm,
                  weak_factory_.GetWeakPtr()),
-      base::TimeDelta::FromMicroseconds(delay.ToMicroseconds()));
+      base::TimeDelta::FromMicroseconds(
+          alarm_time.Subtract(QuicTime::Zero()).ToMicroseconds()));
 }
 
 void QuicConnectionHelper::SetTimeoutAlarm(QuicTime::Delta delay) {