| 
					
				 | 
			
			
				@@ -278,9 +278,9 @@ static void maybe_set_status_code(grpc_call *call, gpr_uint32 status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void maybe_set_status_details(grpc_call *call, grpc_mdstr *status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!call->status_details) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      call->status_details = grpc_mdstr_ref(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!call->status_details) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    call->status_details = grpc_mdstr_ref(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 grpc_call_error grpc_call_cancel(grpc_call *c) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,8 +299,12 @@ grpc_call_error grpc_call_cancel(grpc_call *c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return GRPC_CALL_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-grpc_call_error grpc_call_cancel_with_status(grpc_call *c, grpc_status_code status, const char *description) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc_mdstr *details = description? grpc_mdstr_from_string(c->metadata_context, description) : NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+grpc_call_error grpc_call_cancel_with_status(grpc_call *c, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             grpc_status_code status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             const char *description) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_mdstr *details = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      description ? grpc_mdstr_from_string(c->metadata_context, description) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   gpr_mu_lock(&c->read_mu); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   maybe_set_status_code(c, status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (details) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -825,7 +829,8 @@ void grpc_call_recv_metadata(grpc_call_element *elem, grpc_call_op *op) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_call *call = CALL_FROM_TOP_ELEM(elem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_mdelem *md = op->data.metadata; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_mdstr *key = md->key; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  gpr_log(GPR_DEBUG, "call %p got metadata %s %s", call, grpc_mdstr_as_c_string(md->key), grpc_mdstr_as_c_string(md->value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gpr_log(GPR_DEBUG, "call %p got metadata %s %s", call, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          grpc_mdstr_as_c_string(md->key), grpc_mdstr_as_c_string(md->value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (key == grpc_channel_get_status_string(call->channel)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     maybe_set_status_code(call, decode_status(md)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     grpc_mdelem_unref(md); 
			 |