Skip to content

Commit cb776d6

Browse files
russcamStuart Cam
authored andcommitted
Don't use written bytes when http compression is enabled (#3964)
This commit fixes a bug whereby written bytes captured when disable direct streaming is enabled are captured before they are compressed, so should not be used for the content of the request when http compression is enabled.
1 parent 487e75c commit cb776d6

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/Elasticsearch.Net/Connection/HttpConnection.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ protected virtual HttpRequestMessage CreateRequestMessage(RequestData requestDat
297297

298298
if (!requestData.RunAs.IsNullOrEmpty())
299299
requestMessage.Headers.Add(RequestData.RunAsSecurityHeader, requestData.RunAs);
300-
300+
301301
return requestMessage;
302302
}
303303

@@ -316,7 +316,8 @@ private static void SetContent(HttpRequestMessage message, RequestData requestDa
316316
else
317317
requestData.PostData.Write(stream, requestData.ConnectionSettings);
318318

319-
if (requestData.PostData.DisableDirectStreaming.GetValueOrDefault(false))
319+
// the written bytes are uncompressed, so can only be used when http compression isn't used
320+
if (requestData.PostData.DisableDirectStreaming.GetValueOrDefault(false) && !requestData.HttpCompression)
320321
{
321322
message.Content = new ByteArrayContent(requestData.PostData.WrittenBytes);
322323
stream.Dispose();
@@ -349,7 +350,8 @@ private static async Task SetContentAsync(HttpRequestMessage message, RequestDat
349350
else
350351
await requestData.PostData.WriteAsync(stream, requestData.ConnectionSettings, cancellationToken).ConfigureAwait(false);
351352

352-
if (requestData.PostData.DisableDirectStreaming.GetValueOrDefault(false))
353+
// the written bytes are uncompressed, so can only be used when http compression isn't used
354+
if (requestData.PostData.DisableDirectStreaming.GetValueOrDefault(false) && !requestData.HttpCompression)
353355
{
354356
message.Content = new ByteArrayContent(requestData.PostData.WrittenBytes);
355357
stream.Dispose();

0 commit comments

Comments
 (0)