From b6450260db8d0abc4a8be50e6340a76b4ada5bb8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 14 Jul 2015 07:12:19 -0700 Subject: Initial fixes for lock free request path --- src/core/surface/server.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/surface/server.c b/src/core/surface/server.c index 9eb501decb..84c25c3cfd 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -317,7 +317,9 @@ static void request_matcher_zombify_all_pending_calls( while (request_matcher->pending_head) { call_data *calld = request_matcher->pending_head; request_matcher->pending_head = calld->pending_next; + gpr_mu_lock(&calld->mu_state); calld->state = ZOMBIED; + gpr_mu_unlock(&calld->mu_state); grpc_iomgr_closure_init( &calld->kill_zombie_closure, kill_zombie, grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0)); @@ -1117,7 +1119,7 @@ static grpc_call_error queue_call_request(grpc_server *server, GPR_ASSERT(calld->state == PENDING); calld->state = ACTIVATED; gpr_mu_unlock(&calld->mu_state); - begin_call(server, calld, rc); + begin_call(server, calld, &server->requested_calls[request_id]); } gpr_mu_lock(&server->mu_call); } -- cgit v1.2.3