aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/channel
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2016-10-04 10:14:02 -0700
committerGravatar Mark D. Roth <roth@google.com>2016-10-04 10:14:02 -0700
commit928a594151aba63f178deb16ae5cb76ca500b967 (patch)
treeb02e5698fe938ccea08f09a930f5f55f614a4d77 /src/core/lib/channel
parent49e405ac6265117e2828e6c7ba83d8bc8d4a60da (diff)
parent274c8ed001aca0dc563ee7e04ecd2f9a486b77ec (diff)
Merge branch 'max_message_size_fix' into service_config
Diffstat (limited to 'src/core/lib/channel')
-rw-r--r--src/core/lib/channel/message_size_filter.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core/lib/channel/message_size_filter.c b/src/core/lib/channel/message_size_filter.c
index 8a32b63449..dbd8afd465 100644
--- a/src/core/lib/channel/message_size_filter.c
+++ b/src/core/lib/channel/message_size_filter.c
@@ -77,10 +77,16 @@ static void recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data,
gpr_asprintf(&message_string,
"Received message larger than max (%u vs. %d)",
(*calld->recv_message)->length, calld->max_recv_size);
- gpr_slice message = gpr_slice_from_copied_string(message_string);
+ grpc_error* new_error = grpc_error_set_int(
+ GRPC_ERROR_CREATE(message_string), GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_INVALID_ARGUMENT);
+ if (error == GRPC_ERROR_NONE) {
+ error = new_error;
+ } else {
+ error = grpc_error_add_child(error, new_error);
+ GRPC_ERROR_UNREF(new_error);
+ }
gpr_free(message_string);
- grpc_call_element_send_close_with_message(
- exec_ctx, elem, GRPC_STATUS_INVALID_ARGUMENT, &message);
}
// Invoke the next callback.
grpc_exec_ctx_sched(exec_ctx, calld->next_recv_message_ready, error, NULL);