aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/surface
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-12-13 17:33:51 -0800
committerGravatar Craig Tiller <ctiller@google.com>2017-01-06 14:52:21 -0800
commitdc21a4efb281459b4d3d046cc17ea89e5b56f878 (patch)
treeadc378617d414bc154c19bbe9e94a00fce1bf92c /src/core/lib/surface
parent732351f8267e51711abd3a390d940c8177871c97 (diff)
Error handling cleanup
Diffstat (limited to 'src/core/lib/surface')
-rw-r--r--src/core/lib/surface/call.c8
-rw-r--r--src/core/lib/surface/server.c10
2 files changed, 9 insertions, 9 deletions
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 4abf981997..17fda435aa 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -336,10 +336,7 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx,
args->server_transport_data, path, call->start_time, send_deadline,
CALL_STACK_FROM_CALL(call));
if (error != GRPC_ERROR_NONE) {
- grpc_status_code status;
- const char *error_str;
- grpc_error_get_status(error, &status, &error_str);
- cancel_with_status(exec_ctx, call, status, error_str);
+ cancel_with_error(exec_ctx, call, GRPC_ERROR_REF(error));
}
if (args->cq != NULL) {
GPR_ASSERT(
@@ -612,7 +609,8 @@ static void get_final_status(grpc_call *call,
grpc_status_code code;
const char *msg = NULL;
- grpc_error_get_status(call->status[i].error, &code, &msg);
+ grpc_error_get_status(call->status[i].error, call->send_deadline, &code,
+ &msg, NULL);
set_value(code, set_value_user_data);
if (details != NULL) {
*details = grpc_slice_from_copied_string(msg);
diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c
index 7af951f2a0..b5f905bf04 100644
--- a/src/core/lib/surface/server.c
+++ b/src/core/lib/surface/server.c
@@ -280,18 +280,20 @@ static void shutdown_cleanup(grpc_exec_ctx *exec_ctx, void *arg,
}
static void send_shutdown(grpc_exec_ctx *exec_ctx, grpc_channel *channel,
- int send_goaway, grpc_error *send_disconnect) {
+ bool send_goaway, grpc_error *send_disconnect) {
struct shutdown_cleanup_args *sc = gpr_malloc(sizeof(*sc));
grpc_closure_init(&sc->closure, shutdown_cleanup, sc,
grpc_schedule_on_exec_ctx);
grpc_transport_op *op = grpc_make_transport_op(&sc->closure);
grpc_channel_element *elem;
- op->send_goaway = send_goaway;
+ op->goaway_error =
+ send_goaway
+ ? grpc_error_set_int(GRPC_ERROR_CREATE("Server shutdown"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
+ : GRPC_ERROR_NONE;
op->set_accept_stream = true;
sc->slice = grpc_slice_from_copied_string("Server shutdown");
- op->goaway_message = &sc->slice;
- op->goaway_status = GRPC_STATUS_OK;
op->disconnect_with_error = send_disconnect;
elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0);