|  | @@ -1072,9 +1072,11 @@ static enum e_op_result execute_stream_op(struct op_and_state* oas) {
 | 
	
		
			
				|  |  |               op_can_be_run(stream_op, s, &oas->state, OP_SEND_MESSAGE)) {
 | 
	
		
			
				|  |  |      CRONET_LOG(GPR_DEBUG, "running: %p  OP_SEND_MESSAGE", oas);
 | 
	
		
			
				|  |  |      stream_state->pending_send_message = false;
 | 
	
		
			
				|  |  | -    if (stream_state->state_callback_received[OP_FAILED]) {
 | 
	
		
			
				|  |  | +    if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
 | 
	
		
			
				|  |  | +        stream_state->state_callback_received[OP_FAILED] ||
 | 
	
		
			
				|  |  | +        stream_state->state_callback_received[OP_SUCCEEDED]) {
 | 
	
		
			
				|  |  |        result = NO_ACTION_POSSIBLE;
 | 
	
		
			
				|  |  | -      CRONET_LOG(GPR_DEBUG, "Stream is either cancelled or failed.");
 | 
	
		
			
				|  |  | +      CRONET_LOG(GPR_DEBUG, "Stream is either cancelled, failed or finished");
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |        grpc_slice_buffer write_slice_buffer;
 | 
	
		
			
				|  |  |        grpc_slice slice;
 | 
	
	
		
			
				|  | @@ -1131,9 +1133,11 @@ static enum e_op_result execute_stream_op(struct op_and_state* oas) {
 | 
	
		
			
				|  |  |               op_can_be_run(stream_op, s, &oas->state,
 | 
	
		
			
				|  |  |                             OP_SEND_TRAILING_METADATA)) {
 | 
	
		
			
				|  |  |      CRONET_LOG(GPR_DEBUG, "running: %p  OP_SEND_TRAILING_METADATA", oas);
 | 
	
		
			
				|  |  | -    if (stream_state->state_callback_received[OP_FAILED]) {
 | 
	
		
			
				|  |  | +    if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
 | 
	
		
			
				|  |  | +        stream_state->state_callback_received[OP_FAILED] ||
 | 
	
		
			
				|  |  | +        stream_state->state_callback_received[OP_SUCCEEDED]) {
 | 
	
		
			
				|  |  |        result = NO_ACTION_POSSIBLE;
 | 
	
		
			
				|  |  | -      CRONET_LOG(GPR_DEBUG, "Stream is either cancelled or failed.");
 | 
	
		
			
				|  |  | +      CRONET_LOG(GPR_DEBUG, "Stream is either cancelled, failed or finished");
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |        CRONET_LOG(GPR_DEBUG, "bidirectional_stream_write (%p, 0)", s->cbs);
 | 
	
		
			
				|  |  |        stream_state->state_callback_received[OP_SEND_MESSAGE] = false;
 |