public override async Task <HttpRequestData> HandleRequestAsync(HttpStatusCode statusCode = HttpStatusCode.OK, IList <HttpHeaderData> headers = null, string content = "") { Http3LoopbackStream stream = await AcceptRequestStreamAsync().ConfigureAwait(false); HttpRequestData request = await stream.ReadRequestDataAsync().ConfigureAwait(false); // We are about to close the connection, after we send the response. // So, send a GOAWAY frame now so the client won't inadvertantly try to reuse the connection. // Note that in HTTP3 (unlike HTTP2) there is no strict ordering between the GOAWAY and the response below; // so the client may race in processing them and we need to handle this. await _outboundControlStream.SendGoAwayFrameAsync(stream.StreamId + 4); await stream.SendResponseAsync(statusCode, headers, content).ConfigureAwait(false); await WaitForClientDisconnectAsync(); return(request); }
public override async Task <HttpRequestData> ReadRequestDataAsync(bool readBody = true) { Http3LoopbackStream stream = await AcceptRequestStreamAsync().ConfigureAwait(false); return(await stream.ReadRequestDataAsync(readBody).ConfigureAwait(false)); }