From e6d1182cd612e4ec3794e82ddca5987486134f88 Mon Sep 17 00:00:00 2001 From: Kurt Thiemann Date: Wed, 13 Nov 2024 16:13:08 +0100 Subject: [PATCH] [HttpClient] Stream request body in HttplugClient and Psr18Client --- src/Symfony/Component/HttpClient/HttplugClient.php | 9 +++++++-- src/Symfony/Component/HttpClient/Psr18Client.php | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpClient/HttplugClient.php b/src/Symfony/Component/HttpClient/HttplugClient.php index 501477bb8c61e..3048b10bd0331 100644 --- a/src/Symfony/Component/HttpClient/HttplugClient.php +++ b/src/Symfony/Component/HttpClient/HttplugClient.php @@ -229,9 +229,14 @@ private function sendPsr7Request(RequestInterface $request, ?bool $buffer = null $body->seek(0); } + $headers = $request->getHeaders(); + if (!$request->hasHeader('content-length') && 0 <= $size = $body->getSize() ?? -1) { + $headers['Content-Length'] = [$size]; + } + $options = [ - 'headers' => $request->getHeaders(), - 'body' => $body->getContents(), + 'headers' => $headers, + 'body' => static fn (int $size) => $body->read($size), 'buffer' => $buffer, ]; diff --git a/src/Symfony/Component/HttpClient/Psr18Client.php b/src/Symfony/Component/HttpClient/Psr18Client.php index b83eea0a3737f..0c6d365a9564d 100644 --- a/src/Symfony/Component/HttpClient/Psr18Client.php +++ b/src/Symfony/Component/HttpClient/Psr18Client.php @@ -93,9 +93,14 @@ public function sendRequest(RequestInterface $request): ResponseInterface $body->seek(0); } + $headers = $request->getHeaders(); + if (!$request->hasHeader('content-length') && 0 <= $size = $body->getSize() ?? -1) { + $headers['Content-Length'] = [$size]; + } + $options = [ - 'headers' => $request->getHeaders(), - 'body' => $body->getContents(), + 'headers' => $headers, + 'body' => static fn (int $size) => $body->read($size), ]; if ('1.0' === $request->getProtocolVersion()) {