Fix MultiCurl DELETE sending empty body when no data given (#1225)

This commit is contained in:
Zach Borboa
2026-10-20 21:33:06 -04:00
committed by GitHub
parent 255e758be7
commit 5535dddace
2 changed files with 31 additions and 3 deletions
+1 -3
View File
@@ -73,9 +73,7 @@ class MultiCurl extends BaseCurl
$curl = new Curl($this->baseUrl, $this->options);
$this->queueHandle($curl);
$this->setUrl($url, $query_parameters);
$curl->setUrl($url, $query_parameters);
$curl->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
$curl->setOpt(CURLOPT_POSTFIELDS, $curl->buildPostData($data));
$curl->setDelete($url, $query_parameters, $data);
return $curl;
}
@@ -4081,6 +4081,36 @@ class PHPMultiCurlClassTest extends \PHPUnit\Framework\TestCase
$this->assertFalse($download_callback_called);
}
public function testDeleteContentLengthSetWithBody()
{
$request_body = 'a=1&b=2&c=3';
$multi_curl = new MultiCurl();
$multi_curl->setHeader('X-DEBUG-TEST', 'request_method');
$delete = $multi_curl->addDelete(Test::TEST_URL, [], $request_body);
$multi_curl->start();
$this->assertEquals(strlen($request_body), $delete->requestHeaders['content-length']);
}
public function testDeleteContentLengthUnsetWithoutBody()
{
$multi_curl = new MultiCurl();
$multi_curl->setHeader('X-DEBUG-TEST', 'request_method');
$delete = $multi_curl->addDelete(Test::TEST_URL, [], []);
$multi_curl->start();
$this->assertFalse(isset($delete->requestHeaders['content-length']));
}
public function testDeleteZeroRequestBody()
{
$multi_curl = new MultiCurl();
$multi_curl->setTimeout(2);
$multi_curl->setHeader('X-DEBUG-TEST', 'post_json');
$delete = $multi_curl->addDelete(Test::TEST_URL, [], '0');
$multi_curl->start();
$this->assertFalse($delete->error);
$this->assertSame('0', $delete->rawResponse);
}
public function testSetUrlInConstructor()
{
$data = ['key' => 'value'];