From e635491c96ed7e3cc4efa15f1930009f1fe38905 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 15 Oct 2019 09:35:54 +0200 Subject: [PATCH] [HttpClient] workaround curl_multi_select() issue --- .appveyor.yml | 1 - src/Symfony/Component/HttpClient/Response/CurlResponse.php | 5 +++++ src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 30cc82fb5b..648c9a9849 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -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 diff --git a/src/Symfony/Component/HttpClient/Response/CurlResponse.php b/src/Symfony/Component/HttpClient/Response/CurlResponse.php index 532f413086..6f4ebf554f 100644 --- a/src/Symfony/Component/HttpClient/Response/CurlResponse.php +++ b/src/Symfony/Component/HttpClient/Response/CurlResponse.php @@ -274,6 +274,11 @@ final class CurlResponse implements ResponseInterface */ 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); } diff --git a/src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php b/src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php index 20ac77ff37..485712c688 100644 --- a/src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php +++ b/src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php @@ -597,9 +597,9 @@ abstract class HttpClientTestCase extends TestCase { $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()); }