aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-06-01 08:16:29 -0700
committerGravatar Craig Tiller <ctiller@google.com>2016-06-01 08:16:29 -0700
commit09c464a1424067fc3b5e5f0b1280a8f8c3444342 (patch)
treec73dc3684f4fa9eb54ff6f1b04a8c9674e0b950f
parentcaad18024d93f3c12d3e7f4c3f903e7df5a4c5c8 (diff)
Fix too much metadata
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.c13
-rw-r--r--src/core/lib/iomgr/error.c2
-rw-r--r--src/core/lib/iomgr/error.h1
3 files changed, 12 insertions, 4 deletions
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 827d65f610..31b43fb026 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -1140,10 +1140,15 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
transport_global->settings[GRPC_PEER_SETTINGS]
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
if (metadata_size > metadata_peer_limit) {
- gpr_log(GPR_DEBUG,
- "to-be-sent initial metadata size exceeds peer limit "
- "(%lu vs. %lu)",
- metadata_size, metadata_peer_limit);
+ grpc_chttp2_complete_closure_step(
+ exec_ctx, transport_global, stream_global,
+ &stream_global->send_initial_metadata_finished,
+ grpc_error_set_int(
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE(
+ "to-be-sent initial metadata size exceeds peer limit"),
+ GRPC_ERROR_INT_SIZE, (intptr_t)metadata_size),
+ GRPC_ERROR_INT_LIMIT, (intptr_t)metadata_peer_limit));
cancel_from_api(exec_ctx, transport_global, stream_global,
GRPC_STATUS_RESOURCE_EXHAUSTED);
} else {
diff --git a/src/core/lib/iomgr/error.c b/src/core/lib/iomgr/error.c
index b38584100d..35154268f3 100644
--- a/src/core/lib/iomgr/error.c
+++ b/src/core/lib/iomgr/error.c
@@ -102,6 +102,8 @@ static const char *error_int_name(grpc_error_ints key) {
return "grpc_status";
case GRPC_ERROR_INT_OFFSET:
return "offset";
+ case GRPC_ERROR_INT_LIMIT:
+ return "limit";
case GRPC_ERROR_INT_INDEX:
return "index";
case GRPC_ERROR_INT_SIZE:
diff --git a/src/core/lib/iomgr/error.h b/src/core/lib/iomgr/error.h
index 695724c0be..ede159526e 100644
--- a/src/core/lib/iomgr/error.h
+++ b/src/core/lib/iomgr/error.h
@@ -62,6 +62,7 @@ typedef enum {
GRPC_ERROR_INT_OFFSET,
GRPC_ERROR_INT_INDEX,
GRPC_ERROR_INT_SIZE,
+ GRPC_ERROR_INT_LIMIT,
GRPC_ERROR_INT_HTTP2_ERROR,
GRPC_ERROR_INT_TSI_CODE,
GRPC_ERROR_INT_SECURITY_STATUS,