From d1253a3ae4e093c02001120af1a50d8d68800aad Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 23 Sep 2016 15:45:05 -0700
Subject: [PATCH] Tests pass with buffer pools plumbed in

---
 .../chttp2/server/insecure/server_chttp2_posix.c          | 8 ++++++--
 src/core/lib/iomgr/buffer_pool.c                          | 2 +-
 src/core/lib/iomgr/buffer_pool.h                          | 2 +-
 test/core/end2end/fuzzers/api_fuzzer.c                    | 5 +++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
index 020f67edd2..f120e7cf8d 100644
--- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
+++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
@@ -57,8 +57,12 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server *server,
   char *name;
   gpr_asprintf(&name, "fd:%d", fd);
 
-  grpc_endpoint *server_endpoint = grpc_tcp_create(
-      grpc_fd_create(fd, name), NULL, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, name);
+  grpc_buffer_pool *buffer_pool =
+      grpc_buffer_pool_from_channel_args(grpc_server_get_channel_args(server));
+  grpc_endpoint *server_endpoint =
+      grpc_tcp_create(grpc_fd_create(fd, name), buffer_pool,
+                      GRPC_TCP_DEFAULT_READ_SLICE_SIZE, name);
+  grpc_buffer_pool_internal_unref(&exec_ctx, buffer_pool);
 
   gpr_free(name);
 
diff --git a/src/core/lib/iomgr/buffer_pool.c b/src/core/lib/iomgr/buffer_pool.c
index 78a98027f5..766de44bf4 100644
--- a/src/core/lib/iomgr/buffer_pool.c
+++ b/src/core/lib/iomgr/buffer_pool.c
@@ -372,7 +372,7 @@ void grpc_buffer_pool_resize(grpc_buffer_pool *buffer_pool, size_t size) {
  */
 
 grpc_buffer_pool *grpc_buffer_pool_from_channel_args(
-    grpc_channel_args *channel_args) {
+    const grpc_channel_args *channel_args) {
   for (size_t i = 0; i < channel_args->num_args; i++) {
     if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_BUFFER_POOL)) {
       if (channel_args->args[i].type == GRPC_ARG_POINTER) {
diff --git a/src/core/lib/iomgr/buffer_pool.h b/src/core/lib/iomgr/buffer_pool.h
index 2ffc5b6b75..8b202de5cd 100644
--- a/src/core/lib/iomgr/buffer_pool.h
+++ b/src/core/lib/iomgr/buffer_pool.h
@@ -42,7 +42,7 @@ grpc_buffer_pool *grpc_buffer_pool_internal_ref(grpc_buffer_pool *buffer_pool);
 void grpc_buffer_pool_internal_unref(grpc_exec_ctx *exec_ctx,
                                      grpc_buffer_pool *buffer_pool);
 grpc_buffer_pool *grpc_buffer_pool_from_channel_args(
-    grpc_channel_args *channel_args);
+    const grpc_channel_args *channel_args);
 
 typedef enum {
   GRPC_BULIST_AWAITING_ALLOCATION,
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 6d676dd02e..2d46989d11 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -232,8 +232,8 @@ void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
 // defined in tcp_client_posix.c
 extern void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
-    grpc_pollset_set *interested_parties, const struct sockaddr *addr,
-    size_t addr_len, gpr_timespec deadline);
+    grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args,
+    const struct sockaddr *addr, size_t addr_len, gpr_timespec deadline);
 
 static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                           grpc_endpoint **ep, gpr_timespec deadline);
@@ -290,6 +290,7 @@ static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
 static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
                                   grpc_closure *closure, grpc_endpoint **ep,
                                   grpc_pollset_set *interested_parties,
+                                  const grpc_channel_args *channel_args,
                                   const struct sockaddr *addr, size_t addr_len,
                                   gpr_timespec deadline) {
   sched_connect(exec_ctx, closure, ep, deadline);
-- 
GitLab