|  | @@ -122,6 +122,12 @@ static void begin_frame(framer_state *st, frame_type type) {
 | 
	
		
			
				|  |  |    st->output_length_at_start_of_frame = st->output->length;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static void begin_new_frame(framer_state *st, frame_type type) {
 | 
	
		
			
				|  |  | +  finish_frame(st, 1, 0);
 | 
	
		
			
				|  |  | +  st->last_was_header = 0;
 | 
	
		
			
				|  |  | +  begin_frame(st, type);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /* make sure that the current frame is of the type desired, and has sufficient
 | 
	
		
			
				|  |  |     space to add at least about_to_add bytes -- finishes the current frame if
 | 
	
		
			
				|  |  |     needed */
 | 
	
	
		
			
				|  | @@ -571,6 +577,7 @@ void grpc_chttp2_encode(grpc_stream_op *ops, size_t ops_count, int eof,
 | 
	
		
			
				|  |  |             a metadata element that needs to be unreffed back into the metadata
 | 
	
		
			
				|  |  |             slot. THIS MAY NOT BE THE SAME ELEMENT (if a decoder table slot got
 | 
	
		
			
				|  |  |             updated). After this loop, we'll do a batch unref of elements. */
 | 
	
		
			
				|  |  | +        begin_new_frame(&st, HEADER);
 | 
	
		
			
				|  |  |          need_unref |= op->data.metadata.garbage.head != NULL;
 | 
	
		
			
				|  |  |          grpc_metadata_batch_assert_ok(&op->data.metadata);
 | 
	
		
			
				|  |  |          for (l = op->data.metadata.list.head; l; l = l->next) {
 | 
	
	
		
			
				|  | @@ -580,9 +587,6 @@ void grpc_chttp2_encode(grpc_stream_op *ops, size_t ops_count, int eof,
 | 
	
		
			
				|  |  |          if (gpr_time_cmp(op->data.metadata.deadline, gpr_inf_future) != 0) {
 | 
	
		
			
				|  |  |            deadline_enc(compressor, op->data.metadata.deadline, &st);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        ensure_frame_type(&st, HEADER, 0);
 | 
	
		
			
				|  |  | -        finish_frame(&st, 1, 0);
 | 
	
		
			
				|  |  | -        st.last_was_header = 0; /* force a new header frame */
 | 
	
		
			
				|  |  |          curop++;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case GRPC_OP_SLICE:
 |