Add estimator test
diff --git a/BUILD b/BUILD
index 5c43334..76ce21c 100644
--- a/BUILD
+++ b/BUILD
@@ -237,6 +237,7 @@
     "src/core/lib/surface/init.h",
     "src/core/lib/surface/lame_client.h",
     "src/core/lib/surface/server.h",
+    "src/core/lib/transport/bdp_estimator.h",
     "src/core/lib/transport/byte_stream.h",
     "src/core/lib/transport/connectivity_state.h",
     "src/core/lib/transport/mdstr_hash_table.h",
@@ -409,6 +410,7 @@
     "src/core/lib/surface/server.c",
     "src/core/lib/surface/validate_metadata.c",
     "src/core/lib/surface/version.c",
+    "src/core/lib/transport/bdp_estimator.c",
     "src/core/lib/transport/byte_stream.c",
     "src/core/lib/transport/connectivity_state.c",
     "src/core/lib/transport/mdstr_hash_table.c",
@@ -642,6 +644,7 @@
     "src/core/lib/surface/init.h",
     "src/core/lib/surface/lame_client.h",
     "src/core/lib/surface/server.h",
+    "src/core/lib/transport/bdp_estimator.h",
     "src/core/lib/transport/byte_stream.h",
     "src/core/lib/transport/connectivity_state.h",
     "src/core/lib/transport/mdstr_hash_table.h",
@@ -799,6 +802,7 @@
     "src/core/lib/surface/server.c",
     "src/core/lib/surface/validate_metadata.c",
     "src/core/lib/surface/version.c",
+    "src/core/lib/transport/bdp_estimator.c",
     "src/core/lib/transport/byte_stream.c",
     "src/core/lib/transport/connectivity_state.c",
     "src/core/lib/transport/mdstr_hash_table.c",
@@ -1002,6 +1006,7 @@
     "src/core/lib/surface/init.h",
     "src/core/lib/surface/lame_client.h",
     "src/core/lib/surface/server.h",
+    "src/core/lib/transport/bdp_estimator.h",
     "src/core/lib/transport/byte_stream.h",
     "src/core/lib/transport/connectivity_state.h",
     "src/core/lib/transport/mdstr_hash_table.h",
@@ -1151,6 +1156,7 @@
     "src/core/lib/surface/server.c",
     "src/core/lib/surface/validate_metadata.c",
     "src/core/lib/surface/version.c",
+    "src/core/lib/transport/bdp_estimator.c",
     "src/core/lib/transport/byte_stream.c",
     "src/core/lib/transport/connectivity_state.c",
     "src/core/lib/transport/mdstr_hash_table.c",
@@ -1916,6 +1922,7 @@
     "src/core/lib/surface/server.c",
     "src/core/lib/surface/validate_metadata.c",
     "src/core/lib/surface/version.c",
+    "src/core/lib/transport/bdp_estimator.c",
     "src/core/lib/transport/byte_stream.c",
     "src/core/lib/transport/connectivity_state.c",
     "src/core/lib/transport/mdstr_hash_table.c",
@@ -2128,6 +2135,7 @@
     "src/core/lib/surface/init.h",
     "src/core/lib/surface/lame_client.h",
     "src/core/lib/surface/server.h",
+    "src/core/lib/transport/bdp_estimator.h",
     "src/core/lib/transport/byte_stream.h",
     "src/core/lib/transport/connectivity_state.h",
     "src/core/lib/transport/mdstr_hash_table.h",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 893aac3..78a4852 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -374,6 +374,7 @@
   src/core/lib/surface/server.c
   src/core/lib/surface/validate_metadata.c
   src/core/lib/surface/version.c
+  src/core/lib/transport/bdp_estimator.c
   src/core/lib/transport/byte_stream.c
   src/core/lib/transport/connectivity_state.c
   src/core/lib/transport/mdstr_hash_table.c
@@ -635,6 +636,7 @@
   src/core/lib/surface/server.c
   src/core/lib/surface/validate_metadata.c
   src/core/lib/surface/version.c
+  src/core/lib/transport/bdp_estimator.c
   src/core/lib/transport/byte_stream.c
   src/core/lib/transport/connectivity_state.c
   src/core/lib/transport/mdstr_hash_table.c
@@ -868,6 +870,7 @@
   src/core/lib/surface/server.c
   src/core/lib/surface/validate_metadata.c
   src/core/lib/surface/version.c
+  src/core/lib/transport/bdp_estimator.c
   src/core/lib/transport/byte_stream.c
   src/core/lib/transport/connectivity_state.c
   src/core/lib/transport/mdstr_hash_table.c
diff --git a/Makefile b/Makefile
index 38be9e6..5c96a07 100644
--- a/Makefile
+++ b/Makefile
@@ -905,6 +905,7 @@
 alpn_test: $(BINDIR)/$(CONFIG)/alpn_test
 api_fuzzer: $(BINDIR)/$(CONFIG)/api_fuzzer
 bad_server_response_test: $(BINDIR)/$(CONFIG)/bad_server_response_test
+bdp_estimator_test: $(BINDIR)/$(CONFIG)/bdp_estimator_test
 bin_decoder_test: $(BINDIR)/$(CONFIG)/bin_decoder_test
 bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test
 census_context_test: $(BINDIR)/$(CONFIG)/census_context_test
@@ -1242,6 +1243,7 @@
   $(BINDIR)/$(CONFIG)/alloc_test \
   $(BINDIR)/$(CONFIG)/alpn_test \
   $(BINDIR)/$(CONFIG)/bad_server_response_test \
+  $(BINDIR)/$(CONFIG)/bdp_estimator_test \
   $(BINDIR)/$(CONFIG)/bin_decoder_test \
   $(BINDIR)/$(CONFIG)/bin_encoder_test \
   $(BINDIR)/$(CONFIG)/census_context_test \
@@ -1561,6 +1563,8 @@
 	$(Q) $(BINDIR)/$(CONFIG)/alpn_test || ( echo test alpn_test failed ; exit 1 )
 	$(E) "[RUN]     Testing bad_server_response_test"
 	$(Q) $(BINDIR)/$(CONFIG)/bad_server_response_test || ( echo test bad_server_response_test failed ; exit 1 )
+	$(E) "[RUN]     Testing bdp_estimator_test"
+	$(Q) $(BINDIR)/$(CONFIG)/bdp_estimator_test || ( echo test bdp_estimator_test failed ; exit 1 )
 	$(E) "[RUN]     Testing bin_decoder_test"
 	$(Q) $(BINDIR)/$(CONFIG)/bin_decoder_test || ( echo test bin_decoder_test failed ; exit 1 )
 	$(E) "[RUN]     Testing bin_encoder_test"
@@ -2631,6 +2635,7 @@
     src/core/lib/surface/server.c \
     src/core/lib/surface/validate_metadata.c \
     src/core/lib/surface/version.c \
+    src/core/lib/transport/bdp_estimator.c \
     src/core/lib/transport/byte_stream.c \
     src/core/lib/transport/connectivity_state.c \
     src/core/lib/transport/mdstr_hash_table.c \
@@ -2910,6 +2915,7 @@
     src/core/lib/surface/server.c \
     src/core/lib/surface/validate_metadata.c \
     src/core/lib/surface/version.c \
+    src/core/lib/transport/bdp_estimator.c \
     src/core/lib/transport/byte_stream.c \
     src/core/lib/transport/connectivity_state.c \
     src/core/lib/transport/mdstr_hash_table.c \
@@ -3179,6 +3185,7 @@
     src/core/lib/surface/server.c \
     src/core/lib/surface/validate_metadata.c \
     src/core/lib/surface/version.c \
+    src/core/lib/transport/bdp_estimator.c \
     src/core/lib/transport/byte_stream.c \
     src/core/lib/transport/connectivity_state.c \
     src/core/lib/transport/mdstr_hash_table.c \
@@ -3374,6 +3381,7 @@
     src/core/lib/surface/server.c \
     src/core/lib/surface/validate_metadata.c \
     src/core/lib/surface/version.c \
+    src/core/lib/transport/bdp_estimator.c \
     src/core/lib/transport/byte_stream.c \
     src/core/lib/transport/connectivity_state.c \
     src/core/lib/transport/mdstr_hash_table.c \
@@ -6986,6 +6994,38 @@
 endif
 
 
+BDP_ESTIMATOR_TEST_SRC = \
+    test/core/transport/bdp_estimator_test.c \
+
+BDP_ESTIMATOR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BDP_ESTIMATOR_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/bdp_estimator_test: openssl_dep_error
+
+else
+
+
+
+$(BINDIR)/$(CONFIG)/bdp_estimator_test: $(BDP_ESTIMATOR_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LD) $(LDFLAGS) $(BDP_ESTIMATOR_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/bdp_estimator_test
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/transport/bdp_estimator_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_bdp_estimator_test: $(BDP_ESTIMATOR_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(BDP_ESTIMATOR_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
 BIN_DECODER_TEST_SRC = \
     test/core/transport/chttp2/bin_decoder_test.c \
 
diff --git a/binding.gyp b/binding.gyp
index 397bb1b..d94f2fe 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -649,6 +649,7 @@
         'src/core/lib/surface/server.c',
         'src/core/lib/surface/validate_metadata.c',
         'src/core/lib/surface/version.c',
+        'src/core/lib/transport/bdp_estimator.c',
         'src/core/lib/transport/byte_stream.c',
         'src/core/lib/transport/connectivity_state.c',
         'src/core/lib/transport/mdstr_hash_table.c',
diff --git a/build.yaml b/build.yaml
index 2a06653..4237876 100644
--- a/build.yaml
+++ b/build.yaml
@@ -241,6 +241,7 @@
   - src/core/lib/surface/init.h
   - src/core/lib/surface/lame_client.h
   - src/core/lib/surface/server.h
+  - src/core/lib/transport/bdp_estimator.h
   - src/core/lib/transport/byte_stream.h
   - src/core/lib/transport/connectivity_state.h
   - src/core/lib/transport/mdstr_hash_table.h
@@ -335,6 +336,7 @@
   - src/core/lib/surface/server.c
   - src/core/lib/surface/validate_metadata.c
   - src/core/lib/surface/version.c
+  - src/core/lib/transport/bdp_estimator.c
   - src/core/lib/transport/byte_stream.c
   - src/core/lib/transport/connectivity_state.c
   - src/core/lib/transport/mdstr_hash_table.c
@@ -1337,6 +1339,16 @@
   - grpc
   - gpr_test_util
   - gpr
+- name: bdp_estimator_test
+  build: test
+  language: c
+  src:
+  - test/core/transport/bdp_estimator_test.c
+  deps:
+  - grpc_test_util
+  - grpc
+  - gpr_test_util
+  - gpr
 - name: bin_decoder_test
   build: test
   language: c
diff --git a/config.m4 b/config.m4
index d871675..a2d480a 100644
--- a/config.m4
+++ b/config.m4
@@ -168,6 +168,7 @@
     src/core/lib/surface/server.c \
     src/core/lib/surface/validate_metadata.c \
     src/core/lib/surface/version.c \
+    src/core/lib/transport/bdp_estimator.c \
     src/core/lib/transport/byte_stream.c \
     src/core/lib/transport/connectivity_state.c \
     src/core/lib/transport/mdstr_hash_table.c \
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index bb1bbc5..cf13b49 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -324,6 +324,7 @@
                       'src/core/lib/surface/init.h',
                       'src/core/lib/surface/lame_client.h',
                       'src/core/lib/surface/server.h',
+                      'src/core/lib/transport/bdp_estimator.h',
                       'src/core/lib/transport/byte_stream.h',
                       'src/core/lib/transport/connectivity_state.h',
                       'src/core/lib/transport/mdstr_hash_table.h',
@@ -500,6 +501,7 @@
                       'src/core/lib/surface/server.c',
                       'src/core/lib/surface/validate_metadata.c',
                       'src/core/lib/surface/version.c',
+                      'src/core/lib/transport/bdp_estimator.c',
                       'src/core/lib/transport/byte_stream.c',
                       'src/core/lib/transport/connectivity_state.c',
                       'src/core/lib/transport/mdstr_hash_table.c',
@@ -701,6 +703,7 @@
                               'src/core/lib/surface/init.h',
                               'src/core/lib/surface/lame_client.h',
                               'src/core/lib/surface/server.h',
+                              'src/core/lib/transport/bdp_estimator.h',
                               'src/core/lib/transport/byte_stream.h',
                               'src/core/lib/transport/connectivity_state.h',
                               'src/core/lib/transport/mdstr_hash_table.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 8517292..1698024 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -244,6 +244,7 @@
   s.files += %w( src/core/lib/surface/init.h )
   s.files += %w( src/core/lib/surface/lame_client.h )
   s.files += %w( src/core/lib/surface/server.h )
+  s.files += %w( src/core/lib/transport/bdp_estimator.h )
   s.files += %w( src/core/lib/transport/byte_stream.h )
   s.files += %w( src/core/lib/transport/connectivity_state.h )
   s.files += %w( src/core/lib/transport/mdstr_hash_table.h )
@@ -420,6 +421,7 @@
   s.files += %w( src/core/lib/surface/server.c )
   s.files += %w( src/core/lib/surface/validate_metadata.c )
   s.files += %w( src/core/lib/surface/version.c )
+  s.files += %w( src/core/lib/transport/bdp_estimator.c )
   s.files += %w( src/core/lib/transport/byte_stream.c )
   s.files += %w( src/core/lib/transport/connectivity_state.c )
   s.files += %w( src/core/lib/transport/mdstr_hash_table.c )
diff --git a/package.xml b/package.xml
index 31a2822..430be87 100644
--- a/package.xml
+++ b/package.xml
@@ -251,6 +251,7 @@
     <file baseinstalldir="/" name="src/core/lib/surface/init.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/lame_client.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/server.h" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/bdp_estimator.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/byte_stream.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/connectivity_state.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/mdstr_hash_table.h" role="src" />
@@ -427,6 +428,7 @@
     <file baseinstalldir="/" name="src/core/lib/surface/server.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/validate_metadata.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/version.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/bdp_estimator.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/byte_stream.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/connectivity_state.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/transport/mdstr_hash_table.c" role="src" />
diff --git a/src/core/lib/transport/bdp_estimator.h b/src/core/lib/transport/bdp_estimator.h
index 3149486..40128f1 100644
--- a/src/core/lib/transport/bdp_estimator.h
+++ b/src/core/lib/transport/bdp_estimator.h
@@ -48,7 +48,6 @@
 } grpc_bdp_estimator;
 
 void grpc_bdp_estimator_init(grpc_bdp_estimator *estimator);
-void grpc_bdp_estimator_destroy(grpc_bdp_estimator *estimator);
 
 // Returns true if a reasonable estimate could be obtained
 bool grpc_bdp_estimator_get_estimate(grpc_bdp_estimator *estimator,
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index a40edfb..e951222 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -162,6 +162,7 @@
   'src/core/lib/surface/server.c',
   'src/core/lib/surface/validate_metadata.c',
   'src/core/lib/surface/version.c',
+  'src/core/lib/transport/bdp_estimator.c',
   'src/core/lib/transport/byte_stream.c',
   'src/core/lib/transport/connectivity_state.c',
   'src/core/lib/transport/mdstr_hash_table.c',
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index e5c91cb..7c9c07f 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -861,6 +861,7 @@
 src/core/lib/surface/init.h \
 src/core/lib/surface/lame_client.h \
 src/core/lib/surface/server.h \
+src/core/lib/transport/bdp_estimator.h \
 src/core/lib/transport/byte_stream.h \
 src/core/lib/transport/connectivity_state.h \
 src/core/lib/transport/mdstr_hash_table.h \
@@ -1037,6 +1038,7 @@
 src/core/lib/surface/server.c \
 src/core/lib/surface/validate_metadata.c \
 src/core/lib/surface/version.c \
+src/core/lib/transport/bdp_estimator.c \
 src/core/lib/transport/byte_stream.c \
 src/core/lib/transport/connectivity_state.c \
 src/core/lib/transport/mdstr_hash_table.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 7cfb1d4..dbf4a9b 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -104,6 +104,23 @@
   }, 
   {
     "deps": [
+      "gpr", 
+      "gpr_test_util", 
+      "grpc", 
+      "grpc_test_util"
+    ], 
+    "headers": [], 
+    "is_filegroup": false, 
+    "language": "c", 
+    "name": "bdp_estimator_test", 
+    "src": [
+      "test/core/transport/bdp_estimator_test.c"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
+  {
+    "deps": [
       "grpc", 
       "grpc_test_util"
     ], 
@@ -6514,6 +6531,7 @@
       "src/core/lib/surface/init.h", 
       "src/core/lib/surface/lame_client.h", 
       "src/core/lib/surface/server.h", 
+      "src/core/lib/transport/bdp_estimator.h", 
       "src/core/lib/transport/byte_stream.h", 
       "src/core/lib/transport/connectivity_state.h", 
       "src/core/lib/transport/mdstr_hash_table.h", 
@@ -6694,6 +6712,8 @@
       "src/core/lib/surface/server.h", 
       "src/core/lib/surface/validate_metadata.c", 
       "src/core/lib/surface/version.c", 
+      "src/core/lib/transport/bdp_estimator.c", 
+      "src/core/lib/transport/bdp_estimator.h", 
       "src/core/lib/transport/byte_stream.c", 
       "src/core/lib/transport/byte_stream.h", 
       "src/core/lib/transport/connectivity_state.c", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 9ca4908..80de1a0 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -119,6 +119,27 @@
     "flaky": false, 
     "gtest": false, 
     "language": "c", 
+    "name": "bdp_estimator_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
+  {
+    "args": [], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "gtest": false, 
+    "language": "c", 
     "name": "bin_decoder_test", 
     "platforms": [
       "linux", 
@@ -17002,7 +17023,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17023,7 +17046,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17044,7 +17069,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17065,7 +17092,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17086,7 +17115,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17107,7 +17138,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17128,7 +17161,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17149,7 +17184,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17170,7 +17207,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17191,7 +17230,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17212,7 +17253,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17233,7 +17276,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17254,7 +17299,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17275,7 +17322,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17296,7 +17345,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17317,7 +17368,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17338,7 +17391,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17359,7 +17414,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17380,7 +17437,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17401,7 +17460,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17422,7 +17483,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17443,7 +17506,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17464,7 +17529,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17485,7 +17552,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17506,7 +17575,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17527,7 +17598,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17548,7 +17621,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17569,7 +17644,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17590,7 +17667,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17611,7 +17690,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17632,7 +17713,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17653,7 +17736,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17674,7 +17759,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17695,7 +17782,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17716,7 +17805,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17737,7 +17828,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17758,7 +17851,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17779,7 +17874,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17800,7 +17897,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
@@ -17822,9 +17921,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17846,9 +17943,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17870,9 +17965,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17894,9 +17987,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17918,9 +18009,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17942,9 +18031,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17966,9 +18053,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -17990,9 +18075,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18014,9 +18097,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18038,9 +18119,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18128,9 +18207,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18152,9 +18229,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18176,9 +18251,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18200,9 +18273,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18224,9 +18295,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18248,9 +18317,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18272,9 +18339,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18318,9 +18383,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18342,9 +18405,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18366,9 +18427,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18390,9 +18449,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18414,9 +18471,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18438,9 +18493,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18462,9 +18515,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18486,9 +18537,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18510,9 +18559,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18534,9 +18581,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18558,9 +18603,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18582,9 +18625,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18606,9 +18647,7 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18630,9 +18669,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18654,9 +18691,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18678,9 +18713,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18702,9 +18735,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18726,9 +18757,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18772,9 +18801,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18796,9 +18823,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18820,9 +18845,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
@@ -18844,9 +18867,7 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [
-      "msan"
-    ], 
+    "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_test", 
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index 339b42f..4a22345 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -80,6 +80,17 @@
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdp_estimator_test", "vcxproj\test\bdp_estimator_test\bdp_estimator_test.vcxproj", "{56314C05-7748-B7FD-F9DE-F975A0275427}"
+	ProjectSection(myProperties) = preProject
+        	lib = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+	EndProjectSection
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin_decoder_test", "vcxproj\test\bin_decoder_test\bin_decoder_test.vcxproj", "{6BFAC6BA-3B9D-E8F5-BE35-91E8EFB9E25B}"
 	ProjectSection(myProperties) = preProject
         	lib = "False"
@@ -1666,6 +1677,22 @@
 		{8A811C28-E04E-A444-E4C1-7588DF5B90AE}.Release-DLL|Win32.Build.0 = Release|Win32
 		{8A811C28-E04E-A444-E4C1-7588DF5B90AE}.Release-DLL|x64.ActiveCfg = Release|x64
 		{8A811C28-E04E-A444-E4C1-7588DF5B90AE}.Release-DLL|x64.Build.0 = Release|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug|Win32.ActiveCfg = Debug|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug|x64.ActiveCfg = Debug|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release|Win32.ActiveCfg = Release|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release|x64.ActiveCfg = Release|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug|Win32.Build.0 = Debug|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug|x64.Build.0 = Debug|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release|Win32.Build.0 = Release|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release|x64.Build.0 = Release|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug-DLL|Win32.Build.0 = Debug|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug-DLL|x64.ActiveCfg = Debug|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Debug-DLL|x64.Build.0 = Debug|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release-DLL|Win32.ActiveCfg = Release|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release-DLL|Win32.Build.0 = Release|Win32
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release-DLL|x64.ActiveCfg = Release|x64
+		{56314C05-7748-B7FD-F9DE-F975A0275427}.Release-DLL|x64.Build.0 = Release|x64
 		{6BFAC6BA-3B9D-E8F5-BE35-91E8EFB9E25B}.Debug|Win32.ActiveCfg = Debug|Win32
 		{6BFAC6BA-3B9D-E8F5-BE35-91E8EFB9E25B}.Debug|x64.ActiveCfg = Debug|x64
 		{6BFAC6BA-3B9D-E8F5-BE35-91E8EFB9E25B}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index b8c0049..fa271e1 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -370,6 +370,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\mdstr_hash_table.h" />
@@ -633,6 +634,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index fb1f904..05c1579 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -256,6 +256,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+      <Filter>src\core\lib\transport</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
       <Filter>src\core\lib\transport</Filter>
     </ClCompile>
@@ -899,6 +902,9 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h">
       <Filter>src\core\lib\surface</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h">
+      <Filter>src\core\lib\transport</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h">
       <Filter>src\core\lib\transport</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
index eb3a94d..1d16ca4 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
@@ -263,6 +263,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\mdstr_hash_table.h" />
@@ -480,6 +481,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.c">
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
index fcc8e34..3b04cb2 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
@@ -310,6 +310,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+      <Filter>src\core\lib\transport</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
       <Filter>src\core\lib\transport</Filter>
     </ClCompile>
@@ -683,6 +686,9 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h">
       <Filter>src\core\lib\surface</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h">
+      <Filter>src\core\lib\transport</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h">
       <Filter>src\core\lib\transport</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 519d731..54fbbe8 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -360,6 +360,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\mdstr_hash_table.h" />
@@ -601,6 +602,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\connectivity_state.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index d30df5c..4042b47 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -259,6 +259,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\version.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.c">
+      <Filter>src\core\lib\transport</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.c">
       <Filter>src\core\lib\transport</Filter>
     </ClCompile>
@@ -809,6 +812,9 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\server.h">
       <Filter>src\core\lib\surface</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\bdp_estimator.h">
+      <Filter>src\core\lib\transport</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\transport\byte_stream.h">
       <Filter>src\core\lib\transport</Filter>
     </ClInclude>