diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2015-08-01 16:11:03 -0700 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2015-08-01 16:11:03 -0700 |
commit | fa44f18516747cf6d8a17fe5d8f687b8acf03b5f (patch) | |
tree | cb7e42ca0b32a8f4c887d17bdc1f81024eb6f21a /src/core/surface | |
parent | 99e61645ce348df59c549011d5111cd11ed1c291 (diff) | |
parent | 7716c53a217292f1982d986e4681c1e2b25f4367 (diff) |
Merge github.com:grpc/grpc into propagate
Conflicts:
src/core/surface/channel.c
Diffstat (limited to 'src/core/surface')
-rw-r--r-- | src/core/surface/channel.c | 24 | ||||
-rw-r--r-- | src/core/surface/server.c | 6 |
2 files changed, 18 insertions, 12 deletions
diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c index 44b6e226c4..c90b479769 100644 --- a/src/core/surface/channel.c +++ b/src/core/surface/channel.c @@ -150,15 +150,17 @@ static grpc_call *grpc_channel_create_call_internal( grpc_completion_queue *cq, grpc_mdelem *path_mdelem, grpc_mdelem *authority_mdelem, gpr_timespec deadline) { grpc_mdelem *send_metadata[2]; + int num_metadata = 0; GPR_ASSERT(channel->is_client); - send_metadata[0] = path_mdelem; - send_metadata[1] = authority_mdelem; + send_metadata[num_metadata++] = path_mdelem; + if (authority_mdelem != NULL) { + send_metadata[num_metadata++] = authority_mdelem; + } - return grpc_call_create(channel, parent_call, inheritance_mask, cq, NULL, - send_metadata, GPR_ARRAY_SIZE(send_metadata), - deadline); + return grpc_call_create(channel, parent_call, inheritance_mask, cq, NULL, + send_metadata, num_metadata, deadline); } grpc_call *grpc_channel_create_call(grpc_channel *channel, @@ -172,9 +174,10 @@ grpc_call *grpc_channel_create_call(grpc_channel *channel, grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->path_string), grpc_mdstr_from_string(channel->metadata_context, method, 0)), + host ? grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->authority_string), - grpc_mdstr_from_string(channel->metadata_context, host, 0)), + grpc_mdstr_from_string(channel->metadata_context, host, 0)) : NULL, deadline); } @@ -184,9 +187,9 @@ void *grpc_channel_register_call(grpc_channel *channel, const char *method, rc->path = grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->path_string), grpc_mdstr_from_string(channel->metadata_context, method, 0)); - rc->authority = grpc_mdelem_from_metadata_strings( + rc->authority = host ? grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->authority_string), - grpc_mdstr_from_string(channel->metadata_context, host, 0)); + grpc_mdstr_from_string(channel->metadata_context, host, 0)) : NULL; gpr_mu_lock(&channel->registered_call_mu); rc->next = channel->registered_calls; channel->registered_calls = rc; @@ -200,8 +203,9 @@ grpc_call *grpc_channel_create_registered_call( gpr_timespec deadline) { registered_call *rc = registered_call_handle; return grpc_channel_create_call_internal( - channel, parent_call, inheritance_mask, completion_queue, - GRPC_MDELEM_REF(rc->path), GRPC_MDELEM_REF(rc->authority), deadline); + channel, parent_call, inheritance_mask, completion_queue, + GRPC_MDELEM_REF(rc->path), + rc->authority ? GRPC_MDELEM_REF(rc->authority) : NULL, deadline); } #ifdef GRPC_CHANNEL_REF_COUNT_DEBUG diff --git a/src/core/surface/server.c b/src/core/surface/server.c index 212d1bec27..612b338252 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -554,8 +554,10 @@ static void server_on_recv(void *ptr, int success) { gpr_time_cmp(op_deadline, gpr_inf_future(op_deadline.clock_type))) { calld->deadline = op->data.metadata.deadline; } - calld->got_initial_metadata = 1; - start_new_rpc(elem); + if (calld->host && calld->path) { + calld->got_initial_metadata = 1; + start_new_rpc(elem); + } break; } } |