| 
					
				 | 
			
			
				@@ -47,6 +47,7 @@ typedef struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } call_data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 typedef struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_mdelem *status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_mdelem *message; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } channel_data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,6 +58,7 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   switch (op->type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     case GRPC_SEND_START: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      grpc_call_recv_metadata(elem, grpc_mdelem_ref(channeld->status)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       grpc_call_recv_metadata(elem, grpc_mdelem_ref(channeld->message)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       grpc_call_stream_closed(elem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -93,18 +95,22 @@ static void init_channel_elem(grpc_channel_element *elem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               const grpc_channel_args *args, grpc_mdctx *mdctx, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               int is_first, int is_last) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   channel_data *channeld = elem->channel_data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  char status[12]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   GPR_ASSERT(is_first); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   GPR_ASSERT(is_last); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   channeld->message = grpc_mdelem_from_strings(mdctx, "grpc-message", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                "Rpc sent on a lame channel."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gpr_ltoa(GRPC_STATUS_UNKNOWN, status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  channeld->status = grpc_mdelem_from_strings(mdctx, "grpc-status", status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void destroy_channel_elem(grpc_channel_element *elem) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   channel_data *channeld = elem->channel_data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_mdelem_unref(channeld->message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_mdelem_unref(channeld->status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static const grpc_channel_filter lame_filter = { 
			 |