From 542771746942ad737242a024d44f23cd12babc2f Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Thu, 8 Jun 2023 19:18:32 -0700 Subject: [PATCH] Fix existing header overwritten after using MultiCurl::addCurl() --- src/Curl/MultiCurl.php | 5 ++++- tests/PHPCurlClass/PHPMultiCurlClassTest.php | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Curl/MultiCurl.php b/src/Curl/MultiCurl.php index db933ee..a72eba0 100755 --- a/src/Curl/MultiCurl.php +++ b/src/Curl/MultiCurl.php @@ -863,7 +863,10 @@ class MultiCurl extends BaseCurl $curl->childOfMultiCurl = true; $this->queuedCurls[$curl->id] = $curl; - $curl->setHeaders($this->headers); + // Avoid overwriting any existing header. + if ($curl->getOpt(CURLOPT_HTTPHEADER) === null) { + $curl->setHeaders($this->headers); + } } /** diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index 0a0ee55..977ff9c 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -3472,6 +3472,26 @@ class PHPMultiCurlClassTest extends \PHPUnit\Framework\TestCase $this->assertTrue($complete_called); } + public function testAddCurlHeaders() + { + $header_fields = [ + 'X-SOME-HEADER: some-value', + 'X-ANOTHER-HEADER: another-value', + ]; + + $curl = new Curl(); + $curl->setUrl(Test::TEST_URL); + $curl->setOpt(CURLOPT_HTTPHEADER, $header_fields); + $curl->setUserAgent('agent'); + + $this->assertEquals($header_fields, $curl->getOpt(CURLOPT_HTTPHEADER)); + + $multi_curl = new MultiCurl(); + $multi_curl->addCurl($curl); + + $this->assertEquals($header_fields, $curl->getOpt(CURLOPT_HTTPHEADER)); + } + public function testSequentialId() { $multi_curl = new MultiCurl();