diff --git a/http2/adapter/http2_protocol.h b/http2/adapter/http2_protocol.h
index 1e1dd39..faefae7 100644
--- a/http2/adapter/http2_protocol.h
+++ b/http2/adapter/http2_protocol.h
@@ -50,9 +50,9 @@
 // 7540 Section 6.5.2 (SETTINGS_MAX_FRAME_SIZE).
 const int kDefaultFramePayloadSizeLimit = 16 * 1024;
 
-// The default value for the initial stream flow control window size, according
-// to RFC 7540 Section 6.9.2.
-const int kDefaultInitialStreamWindowSize = 64 * 1024 - 1;
+// The default value for the initial stream and connection flow control window
+// size, according to RFC 7540 Section 6.9.2.
+const int kInitialFlowControlWindowSize = 64 * 1024 - 1;
 
 // The pseudo-header fields as specified in RFC 7540 Section 8.1.2.3 (request)
 // and Section 8.1.2.4 (response).
diff --git a/http2/adapter/nghttp2_adapter_test.cc b/http2/adapter/nghttp2_adapter_test.cc
index 070ed68..38f2301 100644
--- a/http2/adapter/nghttp2_adapter_test.cc
+++ b/http2/adapter/nghttp2_adapter_test.cc
@@ -85,7 +85,7 @@
   EXPECT_EQ(initial_frames.size(), initial_result);
 
   EXPECT_EQ(adapter->GetPeerConnectionWindow(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
   // Some bytes should have been serialized.
   adapter->Send();
   EXPECT_THAT(visitor.data(), EqualsFrames({spdy::SpdyFrameType::SETTINGS,
@@ -498,7 +498,7 @@
   EXPECT_EQ(3, adapter->GetHighestReceivedStreamId());
 
   EXPECT_EQ(adapter->GetPeerConnectionWindow(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
 
   EXPECT_TRUE(adapter->session().want_write());
   // Some bytes should have been serialized.
diff --git a/http2/adapter/nghttp2_session_test.cc b/http2/adapter/nghttp2_session_test.cc
index 5e0fd23..4973b3b 100644
--- a/http2/adapter/nghttp2_session_test.cc
+++ b/http2/adapter/nghttp2_session_test.cc
@@ -48,7 +48,7 @@
                          CreateOptions(), &visitor_);
   EXPECT_TRUE(session.want_read());
   EXPECT_FALSE(session.want_write());
-  EXPECT_EQ(session.GetRemoteWindowSize(), kDefaultInitialStreamWindowSize);
+  EXPECT_EQ(session.GetRemoteWindowSize(), kInitialFlowControlWindowSize);
   EXPECT_NE(session.raw_ptr(), nullptr);
 }
 
@@ -80,7 +80,7 @@
   EXPECT_EQ(initial_frames.size(), initial_result);
 
   EXPECT_EQ(session.GetRemoteWindowSize(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
   ASSERT_EQ(0, nghttp2_session_send(session.raw_ptr()));
   // Some bytes should have been serialized.
   absl::string_view serialized = visitor_.data();
@@ -195,7 +195,7 @@
                          CreateOptions(), &visitor_);
   EXPECT_TRUE(session.want_read());
   EXPECT_FALSE(session.want_write());
-  EXPECT_EQ(session.GetRemoteWindowSize(), kDefaultInitialStreamWindowSize);
+  EXPECT_EQ(session.GetRemoteWindowSize(), kInitialFlowControlWindowSize);
   EXPECT_NE(session.raw_ptr(), nullptr);
 }
 
@@ -265,7 +265,7 @@
   EXPECT_EQ(frames.size(), result);
 
   EXPECT_EQ(session.GetRemoteWindowSize(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
 
   EXPECT_TRUE(session.want_write());
   ASSERT_EQ(0, nghttp2_session_send(session.raw_ptr()));
diff --git a/http2/adapter/oghttp2_session.cc b/http2/adapter/oghttp2_session.cc
index 073bf1c..5927914 100644
--- a/http2/adapter/oghttp2_session.cc
+++ b/http2/adapter/oghttp2_session.cc
@@ -133,7 +133,7 @@
   bool continue_writing = SendQueuedFrames();
   // Wake streams for writes.
   while (continue_writing && write_scheduler_.HasReadyStreams() &&
-         peer_window_ > 0) {
+         connection_send_window_ > 0) {
     const Http2StreamId stream_id = write_scheduler_.PopNextReadyStream();
     // TODO(birenroy): Add a return value to indicate write blockage, so streams
     // aren't woken unnecessarily.
@@ -190,8 +190,8 @@
   }
   bool source_can_produce = true;
   bool connection_can_write = true;
-  int32_t available_window =
-      std::min(std::min(peer_window_, state.send_window), max_frame_payload_);
+  int32_t available_window = std::min(
+      std::min(connection_send_window_, state.send_window), max_frame_payload_);
   while (available_window > 0 && state.outbound_body != nullptr) {
     auto [length, end_data] =
         state.outbound_body->SelectPayloadLength(available_window);
@@ -215,10 +215,11 @@
       connection_can_write = false;
       break;
     }
-    peer_window_ -= length;
+    connection_send_window_ -= length;
     state.send_window -= length;
     available_window =
-        std::min(std::min(peer_window_, state.send_window), max_frame_payload_);
+        std::min(std::min(connection_send_window_, state.send_window),
+                 max_frame_payload_);
     if (end_data) {
       bool sent_trailers = false;
       if (state.trailers != nullptr) {
@@ -472,7 +473,7 @@
 void OgHttp2Session::OnWindowUpdate(spdy::SpdyStreamId stream_id,
                                     int delta_window_size) {
   if (stream_id == 0) {
-    peer_window_ += delta_window_size;
+    connection_send_window_ += delta_window_size;
   } else {
     auto it = stream_map_.find(stream_id);
     if (it == stream_map_.end()) {
diff --git a/http2/adapter/oghttp2_session.h b/http2/adapter/oghttp2_session.h
index 329d2a9..e2ab3fd 100644
--- a/http2/adapter/oghttp2_session.h
+++ b/http2/adapter/oghttp2_session.h
@@ -65,9 +65,7 @@
     return !frames_.empty() || !serialized_prefix_.empty() ||
            write_scheduler_.HasReadyStreams();
   }
-  int GetRemoteWindowSize() const override {
-    return peer_window_;
-  }
+  int GetRemoteWindowSize() const override { return connection_send_window_; }
 
   // From SpdyFramerVisitorInterface
   void OnError(http2::Http2DecoderAdapter::SpdyFramerError error,
@@ -135,7 +133,7 @@
     DataFrameSource* outbound_body = nullptr;
     std::unique_ptr<spdy::SpdyHeaderBlock> trailers;
     void* user_data = nullptr;
-    int32_t send_window = 65535;
+    int32_t send_window = kInitialFlowControlWindowSize;
     bool half_closed_local = false;
     bool half_closed_remote = false;
   };
@@ -203,8 +201,9 @@
 
   Http2StreamId next_stream_id_ = 1;
   Http2StreamId highest_received_stream_id_ = 0;
-  int peer_window_ = 65535;
-  int stream_receive_window_limit_ = 65535;
+  int connection_send_window_ = kInitialFlowControlWindowSize;
+  // The initial flow control receive window size for any newly created streams.
+  int stream_receive_window_limit_ = kInitialFlowControlWindowSize;
   int max_frame_payload_ = 16384;
   Options options_;
   bool received_goaway_ = false;
diff --git a/http2/adapter/oghttp2_session_test.cc b/http2/adapter/oghttp2_session_test.cc
index ca0b0f6..3869db1 100644
--- a/http2/adapter/oghttp2_session_test.cc
+++ b/http2/adapter/oghttp2_session_test.cc
@@ -33,7 +33,7 @@
       visitor, OgHttp2Session::Options{.perspective = Perspective::kClient});
   EXPECT_TRUE(session.want_read());
   EXPECT_FALSE(session.want_write());
-  EXPECT_EQ(session.GetRemoteWindowSize(), kDefaultInitialStreamWindowSize);
+  EXPECT_EQ(session.GetRemoteWindowSize(), kInitialFlowControlWindowSize);
   EXPECT_FALSE(session.IsServerSession());
   EXPECT_EQ(0, session.GetHighestReceivedStreamId());
 }
@@ -64,7 +64,7 @@
   EXPECT_EQ(initial_frames.size(), initial_result);
 
   EXPECT_EQ(session.GetRemoteWindowSize(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
   EXPECT_EQ(0, session.GetHighestReceivedStreamId());
 
   // Should OgHttp2Session require that streams 1 and 3 have been created?
@@ -326,7 +326,7 @@
       visitor, OgHttp2Session::Options{.perspective = Perspective::kServer});
   EXPECT_TRUE(session.want_read());
   EXPECT_FALSE(session.want_write());
-  EXPECT_EQ(session.GetRemoteWindowSize(), kDefaultInitialStreamWindowSize);
+  EXPECT_EQ(session.GetRemoteWindowSize(), kInitialFlowControlWindowSize);
   EXPECT_TRUE(session.IsServerSession());
   EXPECT_EQ(0, session.GetHighestReceivedStreamId());
 }
@@ -411,7 +411,7 @@
   EXPECT_EQ(kSentinel3, session.GetStreamUserData(3));
 
   EXPECT_EQ(session.GetRemoteWindowSize(),
-            kDefaultInitialStreamWindowSize + 1000);
+            kInitialFlowControlWindowSize + 1000);
   EXPECT_EQ(3, session.GetHighestReceivedStreamId());
 
   EXPECT_TRUE(session.want_write());
