Skip to content

Commit

Permalink
bug #33985 [HttpClient] workaround curl_multi_select() issue (nicolas…
Browse files Browse the repository at this point in the history
…-grekas)

This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] workaround curl_multi_select() issue

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

1) Symfony\Component\HttpClient\Tests\CurlHttpClientTest::testNotATimeout
Symfony\Component\HttpClient\Exception\TransportException: Reading from the response stream reached the idle timeout.

Commits
-------

e635491 [HttpClient] workaround curl_multi_select() issue
  • Loading branch information
nicolas-grekas committed Oct 15, 2019
2 parents 927ae8a + e635491 commit 0c77296
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 3 deletions.
1 change: 0 additions & 1 deletion .appveyor.yml
Expand Up @@ -48,7 +48,6 @@ install:
- php composer.phar global require --no-progress --no-scripts --no-plugins symfony/flex dev-master
- git config --global user.email ""
- git config --global user.name "Symfony"
- php .github/build-packages.php "HEAD^" src\Symfony\Bridge\PhpUnit
- php .github/build-packages.php "HEAD^" src\Symfony\Bridge\PhpUnit src\Symfony\Contracts
- IF %APPVEYOR_REPO_BRANCH%==master (SET COMPOSER_ROOT_VERSION=dev-master) ELSE (SET COMPOSER_ROOT_VERSION=%APPVEYOR_REPO_BRANCH%.x-dev)
- php composer.phar update --no-progress --no-suggest --ansi
Expand Down
5 changes: 5 additions & 0 deletions src/Symfony/Component/HttpClient/Response/CurlResponse.php
Expand Up @@ -274,6 +274,11 @@ private static function perform(CurlClientState $multi, array &$responses = null
*/
private static function select(CurlClientState $multi, float $timeout): int
{
if (\PHP_VERSION_ID < 70123 || (70200 <= \PHP_VERSION_ID && \PHP_VERSION_ID < 70211)) {
// workaround https://bugs.php.net/76480
$timeout = min($timeout, 0.01);
}

return curl_multi_select($multi->handle, $timeout);
}

Expand Down
4 changes: 2 additions & 2 deletions src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php
Expand Up @@ -597,9 +597,9 @@ public function testNotATimeout()
{
$client = $this->getHttpClient(__FUNCTION__);
$response = $client->request('GET', 'http://localhost:8057/timeout-header', [
'timeout' => 0.5,
'timeout' => 0.9,
]);
usleep(510000);
sleep(1);
$this->assertSame(200, $response->getStatusCode());
}

Expand Down

0 comments on commit 0c77296

Please sign in to comment.