Skip to content

Commit dd4b2bc

Browse files
committed
Composer v2.9 compatibility
Hack to disallow HTTP/3, forcing `HttpDownloader` to use `RemoteFilesystem` instead of `CurlDownloader`. I suspect api.wordpress.org does not properly support HTTP/3: $ curl --http1.1 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision' ...json response $ curl --http2 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision' ...json response $ curl --http3-only 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision' ...sometimes json response ...but most of the time ERR_DRAINING curl: (56) ngtcp2_conn_writev_stream returned error: ERR_DRAINING See: - composer/composer#12363 - https://github.com/composer/composer/blob/f5854b140ca27164d352ce30deece798acf3e36b/src/Composer/Util/HttpDownloader.php#L537
1 parent dd991b3 commit dd4b2bc

File tree

9 files changed

+30
-8
lines changed

9 files changed

+30
-8
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
strategy:
104104
matrix:
105105
php-version: ${{ fromJSON(needs.php-matrix.outputs.versions) }}
106-
composer-version: ['2.6', '2.7', '2.8']
106+
composer-version: ['2.6', '2.7', '2.8', '2.9']
107107
runs-on: ubuntu-latest
108108
env:
109109
GOFLAGS: '-mod=mod'

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
export GOFLAGS=-mod=mod
22

33
combos := php-8-composer-latest \
4+
php-8.4-composer-2.9 \
45
php-8.4-composer-2.8 \
56
php-8.4-composer-2.7 \
67
php-8.4-composer-2.6 \
8+
php-8.3-composer-2.9 \
79
php-8.3-composer-2.8 \
810
php-8.3-composer-2.7 \
911
php-8.3-composer-2.6

src/WpOrg/Api/Client.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,33 @@ private function fetchAsync(string $slug): PromiseInterface
8888
], '', '&'),
8989
);
9090

91-
return $this->httpDownloader->add($url)
91+
/**
92+
* Hack to disallow HTTP/3, forcing HttpDownloader to use RemoteFilesystem instead of CurlDownloader.
93+
*
94+
* I suspect api.wordpress.org does not properly support HTTP/3:
95+
*
96+
* $ curl --http1.1 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision'
97+
* ...json response
98+
*
99+
* $ curl --http2 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision'
100+
* ...json response
101+
*
102+
* $ curl --http3-only 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&slug=better-delete-revision'
103+
* ...sometimes json response
104+
* ...but most of the time ERR_DRAINING
105+
* curl: (56) ngtcp2_conn_writev_stream returned error: ERR_DRAINING
106+
*
107+
* See:
108+
* - https://github.com/composer/composer/pull/12363
109+
* - https://github.com/composer/composer/blob/f5854b140ca27164d352ce30deece798acf3e36b/src/Composer/Util/HttpDownloader.php#L537
110+
*/
111+
$options = [
112+
'ssl' => [
113+
'allow_self_signed' => true,
114+
],
115+
];
116+
117+
return $this->httpDownloader->add($url, $options)
92118
->then(static fn () => null) // Ignore successful responses. Closed plugins always return 404.
93119
->catch(static function (TransportException $e): ?string {
94120
// Closed plugins always return 404.

testdata/script/install_dist_closed.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
66

77
exec composer install
88

9-
stderr 'Nothing to install, update or remove'
109
stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
1110

1211
-- composer.json --

testdata/script/install_dist_open.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ exec composer install
66

77
exec composer install
88

9-
stderr 'Nothing to install, update or remove'
109
! stderr abandoned
1110

1211
-- composer.json --

testdata/script/require_dist_closed.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
66

77
exec composer require wpackagist-plugin/better-delete-revision
88

9-
stderr 'Nothing to install, update or remove'
109
stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
1110

1211
-- composer.json --

testdata/script/require_dist_open.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ exec composer require wpackagist-plugin/hello-dolly
66

77
exec composer require wpackagist-plugin/hello-dolly
88

9-
stderr 'Nothing to install, update or remove'
109
! stderr abandoned
1110

1211
-- composer.json --

testdata/script/update_dist_closed.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
66

77
exec composer update
88

9-
stderr 'Nothing to install, update or remove'
109
stderr -count=1 'Package wpackagist-plugin/better-delete-revision is abandoned'
1110

1211
-- composer.json --

testdata/script/update_dist_open.txtar

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ exec composer update
66

77
exec composer update
88

9-
stderr 'Nothing to install, update or remove'
109
! stderr abandoned
1110

1211
-- composer.json --

0 commit comments

Comments
 (0)