public void WriteResponseHeaders(int streamId, int statusCode, IHeaderDictionary headers) { lock (_writeLock) { _outgoingFrame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId); var done = _hpackEncoder.BeginEncode(statusCode, EnumerateHeaders(headers), _outgoingFrame.Payload, out var payloadLength); _outgoingFrame.Length = payloadLength; if (done) { _outgoingFrame.HeadersFlags = Http2HeadersFrameFlags.END_HEADERS; } Append(_outgoingFrame.Raw); while (!done) { _outgoingFrame.PrepareContinuation(Http2ContinuationFrameFlags.NONE, streamId); done = _hpackEncoder.Encode(_outgoingFrame.Payload, out var length); _outgoingFrame.Length = length; if (done) { _outgoingFrame.ContinuationFlags = Http2ContinuationFrameFlags.END_HEADERS; } Append(_outgoingFrame.Raw); } } }