private bool flushHeaders(bool closing) { using (var buff = new MemoryStream()) { var headers = _response.WriteHeadersTo(buff); var start = buff.Position; var len = buff.Length - start; if (len > 32768) { return(false); } if (!_response.SendChunked && _response.ContentLength64 != _body.Length) { return(false); } _write(buff.GetBuffer(), (int)start, (int)len); _response.CloseConnection = headers["Connection"] == "close"; _response.HeadersSent = true; } return(true); }
private void flush(bool closing) { if (!_response.HeadersSent) { using (var headers = new MemoryStream()) { _response.WriteHeadersTo(headers, closing); var start = headers.Position; _write(headers.GetBuffer(), (int)start, (int)(headers.Length - start)); } _response.HeadersSent = true; _chunked = _response.SendChunked; _writeBody = _chunked ? _writeChunked : _write; } flushBody(closing); if (closing && _chunked) { var last = getChunkSizeBytes(0, true); _write(last, 0, last.Length); } }