|  | @@ -61,19 +61,25 @@ Channel::~Channel() { grpc_channel_destroy(c_channel_); }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Call Channel::CreateCall(const RpcMethod& method, ClientContext* context,
 | 
	
		
			
				|  |  |                           CompletionQueue* cq) {
 | 
	
		
			
				|  |  | -  const char* host_str = host_.empty() ? NULL : host_.c_str();
 | 
	
		
			
				|  |  | -  auto c_call = method.channel_tag() && context->authority().empty()
 | 
	
		
			
				|  |  | -                    ? grpc_channel_create_registered_call(
 | 
	
		
			
				|  |  | -                          c_channel_, context->propagate_from_call_,
 | 
	
		
			
				|  |  | -                          context->propagation_options_.c_bitmask(), cq->cq(),
 | 
	
		
			
				|  |  | -                          method.channel_tag(), context->raw_deadline())
 | 
	
		
			
				|  |  | -                    : grpc_channel_create_call(
 | 
	
		
			
				|  |  | -                          c_channel_, context->propagate_from_call_,
 | 
	
		
			
				|  |  | -                          context->propagation_options_.c_bitmask(), cq->cq(),
 | 
	
		
			
				|  |  | -                          method.name(), context->authority().empty()
 | 
	
		
			
				|  |  | -                                             ? host_str
 | 
	
		
			
				|  |  | -                                             : context->authority().c_str(),
 | 
	
		
			
				|  |  | -                          context->raw_deadline());
 | 
	
		
			
				|  |  | +  const bool kRegistered = method.channel_tag() && context->authority().empty();
 | 
	
		
			
				|  |  | +  grpc_call* c_call = NULL;
 | 
	
		
			
				|  |  | +  if (kRegistered) {
 | 
	
		
			
				|  |  | +    c_call = grpc_channel_create_registered_call(
 | 
	
		
			
				|  |  | +        c_channel_, context->propagate_from_call_,
 | 
	
		
			
				|  |  | +        context->propagation_options_.c_bitmask(), cq->cq(),
 | 
	
		
			
				|  |  | +        method.channel_tag(), context->raw_deadline());
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    const char* host_str = NULL;
 | 
	
		
			
				|  |  | +    if (!context->authority().empty()) {
 | 
	
		
			
				|  |  | +      host_str = context->authority().c_str();
 | 
	
		
			
				|  |  | +    } else if (!host_.empty()) {
 | 
	
		
			
				|  |  | +      host_str = host_.c_str();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    c_call = grpc_channel_create_call(c_channel_, context->propagate_from_call_,
 | 
	
		
			
				|  |  | +                                      context->propagation_options_.c_bitmask(),
 | 
	
		
			
				|  |  | +                                      cq->cq(), method.name(), host_str,
 | 
	
		
			
				|  |  | +                                      context->raw_deadline());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    grpc_census_call_set_context(c_call, context->census_context());
 | 
	
		
			
				|  |  |    GRPC_TIMER_MARK(GRPC_PTAG_CPP_CALL_CREATED, c_call);
 | 
	
		
			
				|  |  |    context->set_call(c_call, shared_from_this());
 |