| 
					
				 | 
			
			
				@@ -38,6 +38,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "src/core/lib/profiling/timers.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "src/core/lib/support/string.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "src/core/lib/transport/static_metadata.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "src/core/lib/transport/transport_impl.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define EXPECTED_CONTENT_TYPE "application/grpc" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -199,7 +200,8 @@ static grpc_mdelem *scheme_from_args(const grpc_channel_args *args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return GRPC_MDELEM_SCHEME_HTTP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static grpc_mdstr *user_agent_from_args(const grpc_channel_args *args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static grpc_mdstr *user_agent_from_args(const grpc_channel_args *args, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        const char *transport_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   gpr_strvec v; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   size_t i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int is_first = 1; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -221,8 +223,8 @@ static grpc_mdstr *user_agent_from_args(const grpc_channel_args *args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  gpr_asprintf(&tmp, "%sgrpc-c/%s (%s)", is_first ? "" : " ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               grpc_version_string(), GPR_PLATFORM_STRING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gpr_asprintf(&tmp, "%sgrpc-c/%s (%s; %s)", is_first ? "" : " ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               grpc_version_string(), GPR_PLATFORM_STRING, transport_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   is_first = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   gpr_strvec_add(&v, tmp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,9 +255,12 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               grpc_channel_element_args *args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   channel_data *chand = elem->channel_data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   GPR_ASSERT(!args->is_last); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  GPR_ASSERT(args->optional_transport != NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   chand->static_scheme = scheme_from_args(args->channel_args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   chand->user_agent = grpc_mdelem_from_metadata_strings( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      GRPC_MDSTR_USER_AGENT, user_agent_from_args(args->channel_args)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GRPC_MDSTR_USER_AGENT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      user_agent_from_args(args->channel_args, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           args->optional_transport->vtable->name)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* Destructor for channel data */ 
			 |