Skip to content

Commit 0ad7f72

Browse files
authored
Always stream just the headers for DownloadStreamAsync for best memory utilization (#1825)
1 parent de71ad0 commit 0ad7f72

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

src/RestSharp/RestClient.Async.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ record InternalResponse(HttpResponseMessage? ResponseMessage, Uri Url, Exception
9595
/// <returns>The downloaded stream.</returns>
9696
[PublicAPI]
9797
public async Task<Stream?> DownloadStreamAsync(RestRequest request, CancellationToken cancellationToken = default) {
98+
// Make sure we only read the headers so we can stream the content body efficiently
99+
request.CompletionOption = HttpCompletionOption.ResponseHeadersRead;
98100
var response = await ExecuteInternal(request, cancellationToken).ConfigureAwait(false);
99101

100102
if (response.Exception != null) {

src/RestSharp/RestClientExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public static async IAsyncEnumerable<T> StreamJsonAsync<T>(
331331
string resource,
332332
[EnumeratorCancellation] CancellationToken cancellationToken
333333
) {
334-
var request = new RestRequest(resource) { CompletionOption = HttpCompletionOption.ResponseHeadersRead };
334+
var request = new RestRequest(resource);
335335

336336
#if NETSTANDARD
337337
using var stream = await client.DownloadStreamAsync(request, cancellationToken).ConfigureAwait(false);

0 commit comments

Comments
 (0)