Merge branch 'filter_call_init_failure' into filter_api

pull/6915/head
Mark D. Roth 9 years ago
commit 9530e8af05
  1. 2
      src/core/ext/client_config/subchannel_call_holder.c
  2. 9
      src/core/lib/channel/channel_stack.c
  3. 2
      src/core/lib/channel/connected_channel.c
  4. 2
      src/core/lib/surface/call.c
  5. 6
      test/core/end2end/tests/filter_call_init_fails.c

@ -170,7 +170,7 @@ retry:
&subchannel_call); &subchannel_call);
if (error != GRPC_ERROR_NONE) { if (error != GRPC_ERROR_NONE) {
subchannel_call = CANCELLED_CALL; subchannel_call = CANCELLED_CALL;
fail_locked(exec_ctx, holder, error); fail_locked(exec_ctx, holder, GRPC_ERROR_REF(error));
grpc_transport_stream_op_finish_with_failure(exec_ctx, op, error); grpc_transport_stream_op_finish_with_failure(exec_ctx, op, error);
} }
gpr_atm_rel_store(&holder->subchannel_call, gpr_atm_rel_store(&holder->subchannel_call,

@ -189,8 +189,13 @@ grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx,
call_elems[i].call_data = user_data; call_elems[i].call_data = user_data;
grpc_error *error = grpc_error *error =
call_elems[i].filter->init_call_elem(exec_ctx, &call_elems[i], &args); call_elems[i].filter->init_call_elem(exec_ctx, &call_elems[i], &args);
if (error != GRPC_ERROR_NONE && first_error == GRPC_ERROR_NONE) if (error != GRPC_ERROR_NONE) {
first_error = error; if (first_error == GRPC_ERROR_NONE) {
first_error = error;
} else {
GRPC_ERROR_UNREF(error);
}
}
user_data += user_data +=
ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data); ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data);
} }

@ -90,7 +90,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld),
&args->call_stack->refcount, args->server_transport_data); &args->call_stack->refcount, args->server_transport_data);
return r == 0 ? GRPC_ERROR_NONE return r == 0 ? GRPC_ERROR_NONE
: GRPC_ERROR_CREATE("transport initialization failed"); : GRPC_ERROR_CREATE("transport stream initialization failed");
} }
static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,

@ -274,7 +274,7 @@ grpc_call *grpc_call_create(
grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION); grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION);
close_with_status(&exec_ctx, call, (grpc_status_code)status, close_with_status(&exec_ctx, call, (grpc_status_code)status,
error_str == NULL ? "unknown error" : error_str); error_str == NULL ? "unknown error" : error_str);
grpc_error_unref(error); GRPC_ERROR_UNREF(error);
} }
if (cq != NULL) { if (cq != NULL) {
GPR_ASSERT( GPR_ASSERT(

@ -246,8 +246,10 @@ static bool maybe_add_filter(grpc_channel_stack_builder *builder, void *arg) {
grpc_channel_stack_builder_iterator *it = grpc_channel_stack_builder_iterator *it =
grpc_channel_stack_builder_create_iterator_at_last(builder); grpc_channel_stack_builder_create_iterator_at_last(builder);
GPR_ASSERT(grpc_channel_stack_builder_move_prev(it)); GPR_ASSERT(grpc_channel_stack_builder_move_prev(it));
return grpc_channel_stack_builder_add_filter_before(it, &test_filter, NULL, const bool retval = grpc_channel_stack_builder_add_filter_before(
NULL); it, &test_filter, NULL, NULL);
grpc_channel_stack_builder_iterator_destroy(it);
return retval;
} else { } else {
return true; return true;
} }

Loading…
Cancel
Save