Plugin Directory

Changeset 3257107


Ignore:
Timestamp:
03/17/2025 12:04:35 PM (13 months ago)
Author:
gdatavaas
Message:

release 3.0.2

Location:
gdata-antivirus
Files:
34 edited
1 copied

Legend:

Unmodified
Added
Removed
  • gdata-antivirus/tags/3.0.2/Readme.txt

    r3249458 r3257107  
    55Tested up to: 6.7
    66Requires PHP: 8.1
    7 Stable tag: 3.0.1
     7Stable tag: 3.0.2
    88License: GNU General Public License v3.0
    99License URI: https://github.com/GDATASoftwareAG/vaas/blob/main/LICENSE
     
    5656
    5757== Changelog ==
     58
     59= 3.0.2 =
     60
     61* Show error message for wrong credentials
    5862
    5963= 3.0.1 =
  • gdata-antivirus/tags/3.0.2/Vaas/ScanClient.php

    r3245655 r3257107  
    33namespace Gdatacyberdefenseag\GdataAntivirus\Vaas;
    44
     5use Exception;
    56use Gdatacyberdefenseag\GdataAntivirus\Infrastructure\FileSystem\IGdataAntivirusFileSystem;
    67use Gdatacyberdefenseag\GdataAntivirus\PluginPage\AdminNoticesInterface;
     
    4849                add_filter('wp_insert_post_data', array($this, 'scan_post'), 10, 1);
    4950            }
     51            add_action('admin_notices', array($this, 'credentials_check_admin_notice'));
     52            $this->connect();
    5053        }
    5154        public function reconnect()
     
    5457            $this->connect();
    5558        }
    56         public function connect()
     59        public function credentials_check_admin_notice()
     60        {
     61            if ($this->vaas_options->credentials_configured()) {
     62                if ($this->connect() === \false) {
     63                    echo '<div class="notice notice-error is-dismissible">
     64                    <p>VaaS - Error: The credentials did not work. Please check the settings.</p>
     65                    </div>';
     66                }
     67            }
     68        }
     69        public function connect(): bool
    5770        {
    5871            if ($this->connected === \true) {
    59                 return;
     72                return \true;
    6073            }
    6174            $options = $this->vaas_options->get_options();
     
    6578            $vaas_parameters->vaasUrl = $options['vaas_url'];
    6679            if (!$this->vaas_options->credentials_configured()) {
    67                 return;
     80                return \false;
    6881            }
    6982            if ($options['authentication_method'] == 'ResourceOwnerPasswordGrant') {
    70                 $resource_owner_password_grant_authenticator = new ResourceOwnerPasswordGrantAuthenticator('wordpress-customer', $options['username'], $options['password'], $options['token_endpoint']);
    71                 $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($resource_owner_password_grant_authenticator)->build();
     83                $authenticator = new ResourceOwnerPasswordGrantAuthenticator('wordpress-customer', $options['username'], $options['password'], $options['token_endpoint']);
     84                $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($authenticator)->build();
    7285            } else {
    73                 $client_credentials_grant_authenticator = new ClientCredentialsGrantAuthenticator($options['client_id'], $options['client_secret'], $options['token_endpoint']);
    74                 $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($client_credentials_grant_authenticator)->build();
     86                $authenticator = new ClientCredentialsGrantAuthenticator($options['client_id'], $options['client_secret'], $options['token_endpoint']);
     87                $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($authenticator)->build();
     88            }
     89            try {
     90                $authenticator->getTokenAsync()->await();
     91            } catch (Exception $e) {
     92                return \false;
    7593            }
    7694            $this->connected = \true;
     95            return \true;
    7796        }
    7897        public function scan_post($data)
  • gdata-antivirus/tags/3.0.2/composer.json

    r3249458 r3257107  
    11{
    22    "name": "gdatacyberdefenseag\/gdata-antivirus",
    3     "version": "3.0.1",
     3    "version": "3.0.2",
    44    "autoload": {
    55        "psr-4": {
  • gdata-antivirus/tags/3.0.2/composer.lock

    r3249458 r3257107  
    9090        {
    9191            "name": "amphp/byte-stream",
    92             "version": "v2.1.1",
     92            "version": "v2.1.2",
    9393            "source": {
    9494                "type": "git",
    9595                "url": "https://github.com/amphp/byte-stream.git",
    96                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93"
    97             },
    98             "dist": {
    99                 "type": "zip",
    100                 "url": "https://api.github.com/repos/amphp/byte-stream/zipball/daa00f2efdbd71565bf64ffefa89e37542addf93",
    101                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93",
     96                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46"
     97            },
     98            "dist": {
     99                "type": "zip",
     100                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/55a6bd071aec26fa2a3e002618c20c35e3df1b46",
     101                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46",
    102102                "shasum": ""
    103103            },
     
    153153            "support": {
    154154                "issues": "https://github.com/amphp/byte-stream/issues",
    155                 "source": "https://github.com/amphp/byte-stream/tree/v2.1.1"
     155                "source": "https://github.com/amphp/byte-stream/tree/v2.1.2"
    156156            },
    157157            "funding": [
     
    161161                }
    162162            ],
    163             "time": "2024-02-17T04:49:38+00:00"
     163            "time": "2025-03-16T17:10:27+00:00"
    164164        },
    165165        {
     
    542542        {
    543543            "name": "amphp/http-client",
    544             "version": "v5.2.2",
     544            "version": "v5.3.0",
    545545            "source": {
    546546                "type": "git",
    547547                "url": "https://github.com/amphp/http-client.git",
    548                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20"
    549             },
    550             "dist": {
    551                 "type": "zip",
    552                 "url": "https://api.github.com/repos/amphp/http-client/zipball/a3e8711cb71fe909c1ae17450bfa5db652559c20",
    553                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20",
     548                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75"
     549            },
     550            "dist": {
     551                "type": "zip",
     552                "url": "https://api.github.com/repos/amphp/http-client/zipball/d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
     553                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
    554554                "shasum": ""
    555555            },
     
    628628            "support": {
    629629                "issues": "https://github.com/amphp/http-client/issues",
    630                 "source": "https://github.com/amphp/http-client/tree/v5.2.2"
     630                "source": "https://github.com/amphp/http-client/tree/v5.3.0"
    631631            },
    632632            "funding": [
     
    636636                }
    637637            ],
    638             "time": "2025-01-12T20:02:49+00:00"
     638            "time": "2025-03-16T17:32:21+00:00"
    639639        },
    640640        {
     
    786786        {
    787787            "name": "amphp/pipeline",
    788             "version": "v1.2.2",
     788            "version": "v1.2.3",
    789789            "source": {
    790790                "type": "git",
    791791                "url": "https://github.com/amphp/pipeline.git",
    792                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4"
    793             },
    794             "dist": {
    795                 "type": "zip",
    796                 "url": "https://api.github.com/repos/amphp/pipeline/zipball/97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
    797                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
     792                "reference": "7b52598c2e9105ebcddf247fc523161581930367"
     793            },
     794            "dist": {
     795                "type": "zip",
     796                "url": "https://api.github.com/repos/amphp/pipeline/zipball/7b52598c2e9105ebcddf247fc523161581930367",
     797                "reference": "7b52598c2e9105ebcddf247fc523161581930367",
    798798                "shasum": ""
    799799            },
     
    841841            "support": {
    842842                "issues": "https://github.com/amphp/pipeline/issues",
    843                 "source": "https://github.com/amphp/pipeline/tree/v1.2.2"
     843                "source": "https://github.com/amphp/pipeline/tree/v1.2.3"
    844844            },
    845845            "funding": [
     
    849849                }
    850850            ],
    851             "time": "2025-01-19T15:42:46+00:00"
     851            "time": "2025-03-16T16:33:53+00:00"
    852852        },
    853853        {
     
    12301230        {
    12311231            "name": "illuminate/container",
    1232             "version": "v11.44.0",
     1232            "version": "v11.44.2",
    12331233            "source": {
    12341234                "type": "git",
     
    12811281        {
    12821282            "name": "illuminate/contracts",
    1283             "version": "v11.44.0",
     1283            "version": "v11.44.2",
    12841284            "source": {
    12851285                "type": "git",
     
    29302930        {
    29312931            "name": "phpunit/phpunit",
    2932             "version": "11.5.10",
     2932            "version": "11.5.12",
    29332933            "source": {
    29342934                "type": "git",
    29352935                "url": "https://github.com/sebastianbergmann/phpunit.git",
    2936                 "reference": "d5df2b32d729562ff8db634678d71085ee579006"
    2937             },
    2938             "dist": {
    2939                 "type": "zip",
    2940                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d5df2b32d729562ff8db634678d71085ee579006",
    2941                 "reference": "d5df2b32d729562ff8db634678d71085ee579006",
     2936                "reference": "d42785840519401ed2113292263795eb4c0f95da"
     2937            },
     2938            "dist": {
     2939                "type": "zip",
     2940                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d42785840519401ed2113292263795eb4c0f95da",
     2941                "reference": "d42785840519401ed2113292263795eb4c0f95da",
    29422942                "shasum": ""
    29432943            },
     
    29532953                "phar-io/version": "^3.2.1",
    29542954                "php": ">=8.2",
    2955                 "phpunit/php-code-coverage": "^11.0.8",
     2955                "phpunit/php-code-coverage": "^11.0.9",
    29562956                "phpunit/php-file-iterator": "^5.1.0",
    29572957                "phpunit/php-invoker": "^5.0.1",
     
    29602960                "sebastian/cli-parser": "^3.0.2",
    29612961                "sebastian/code-unit": "^3.0.2",
    2962                 "sebastian/comparator": "^6.3.0",
     2962                "sebastian/comparator": "^6.3.1",
    29632963                "sebastian/diff": "^6.0.2",
    29642964                "sebastian/environment": "^7.2.0",
     
    30113011                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
    30123012                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
    3013                 "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.10"
     3013                "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.12"
    30143014            },
    30153015            "funding": [
     
    30273027                }
    30283028            ],
    3029             "time": "2025-02-25T06:11:48+00:00"
     3029            "time": "2025-03-07T07:31:03+00:00"
    30303030        },
    30313031        {
     
    32013201        {
    32023202            "name": "sebastian/comparator",
    3203             "version": "6.3.0",
     3203            "version": "6.3.1",
    32043204            "source": {
    32053205                "type": "git",
    32063206                "url": "https://github.com/sebastianbergmann/comparator.git",
    3207                 "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115"
    3208             },
    3209             "dist": {
    3210                 "type": "zip",
    3211                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
    3212                 "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
     3207                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959"
     3208            },
     3209            "dist": {
     3210                "type": "zip",
     3211                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
     3212                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
    32133213                "shasum": ""
    32143214            },
     
    32293229            "extra": {
    32303230                "branch-alias": {
    3231                     "dev-main": "6.2-dev"
     3231                    "dev-main": "6.3-dev"
    32323232                }
    32333233            },
     
    32693269                "issues": "https://github.com/sebastianbergmann/comparator/issues",
    32703270                "security": "https://github.com/sebastianbergmann/comparator/security/policy",
    3271                 "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0"
     3271                "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1"
    32723272            },
    32733273            "funding": [
     
    32773277                }
    32783278            ],
    3279             "time": "2025-01-06T10:28:19+00:00"
     3279            "time": "2025-03-07T06:57:01+00:00"
    32803280        },
    32813281        {
  • gdata-antivirus/tags/3.0.2/gdata-antivirus.php

    r3249458 r3257107  
    1212 * @wordpress-plugin
    1313 * Plugin Name: G DATA Antivirus
    14  * Version: 3.0.1
     14 * Version: 3.0.2
    1515 * Requires at least: 6.2
    1616 * Tested up to: 6.6
  • gdata-antivirus/tags/3.0.2/vendor/amphp/byte-stream/src/ReadableIterableStream.php

    r3169198 r3257107  
    1010use GDAVSCOPE\Amp\ForbidSerialization;
    1111use GDAVSCOPE\Amp\Pipeline\ConcurrentIterator;
     12use GDAVSCOPE\Amp\Pipeline\DisposedException;
    1213use GDAVSCOPE\Amp\Pipeline\Pipeline;
    1314/**
     
    6364                // Read cancelled, stream did not fail.
    6465            }
     66            if ($exception instanceof DisposedException) {
     67                $exception = new ClosedException('Stream manually closed', previous: $exception);
     68            }
    6569            throw $this->exception = $exception;
    6670        } finally {
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php

    r3245655 r3257107  
    1212use GDAVSCOPE\Amp\Http\Client\SocketException;
    1313use GDAVSCOPE\Amp\Http\Client\TimeoutException;
     14use GDAVSCOPE\Amp\Http\Client\TlsException;
    1415use GDAVSCOPE\Amp\Socket;
    1516use GDAVSCOPE\Amp\Socket\ClientTlsContext;
     
    8485                if ($tlsState !== Socket\TlsState::Disabled) {
    8586                    $socket->close();
    86                     throw new SocketException('Failed to setup TLS connection, connection was in an unexpected TLS state (' . $tlsState->name . ')');
     87                    throw new TlsException('Failed to setup TLS connection, connection was in an unexpected TLS state (' . $tlsState->name . ')');
    8788                }
    8889                $socket->setupTls(new CompositeCancellation($cancellation, new TimeoutCancellation($request->getTlsHandshakeTimeout())));
    8990            } catch (StreamException $streamException) {
    9091                $socket->close();
    91                 throw new SocketException(\sprintf("Connection to '%s' @ '%s' closed during TLS handshake", $authority, $socket->getRemoteAddress()->toString()), 0, $streamException);
     92                $errorMessage = $streamException->getMessage();
     93                \preg_match('/error:[0-9a-f]*:[^:]*:[^:]*:(.+)$/i', $errorMessage, $matches);
     94                $errorMessage = \trim($matches[1] ?? \explode('():', $errorMessage, 2)[1] ?? $errorMessage);
     95                throw new TlsException(\sprintf("Connection to '%s' @ '%s' closed during TLS handshake: %s", $authority, $socket->getRemoteAddress()->toString(), $errorMessage), 0, $streamException);
    9296            } catch (CancelledException) {
    9397                $socket->close();
     
    100104            if ($tlsInfo === null) {
    101105                $socket->close();
    102                 throw new SocketException(\sprintf("Socket closed after TLS handshake with '%s' @ '%s'", $authority, $socket->getRemoteAddress()->toString()));
     106                throw new TlsException(\sprintf("Socket closed after TLS handshake with '%s' @ '%s'", $authority, $socket->getRemoteAddress()->toString()));
    103107            }
    104108            $tlsHandshakeDuration = now() - $tlsHandshakeStart;
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/Connection/Http1Connection.php

    r3245655 r3257107  
    179179            $combinedCancellation = $cancellation;
    180180        }
    181         $id = $combinedCancellation->subscribe($this->close(...));
    182         try {
    183             $this->writeRequest($request, $stream, $protocolVersion, $combinedCancellation);
    184             return $this->readResponse($request, $cancellation, $combinedCancellation, $stream);
    185         } catch (\Throwable $exception) {
    186             $this->socket?->close();
    187             throw $exception;
    188         } finally {
    189             $combinedCancellation->unsubscribe($id);
    190             $cancellation->throwIfRequested();
    191         }
     181        $cancellationId = $combinedCancellation->subscribe($this->close(...));
     182        $responseDeferred = new DeferredFuture();
     183        EventLoop::queue(function () use ($responseDeferred, $request, $stream, $protocolVersion, $combinedCancellation): void {
     184            try {
     185                $this->writeRequest($request, $stream, $protocolVersion, $combinedCancellation);
     186            } catch (\Throwable $exception) {
     187                if (!$responseDeferred->isComplete()) {
     188                    $responseDeferred->error($exception);
     189                }
     190            }
     191        });
     192        EventLoop::queue(function () use ($responseDeferred, $request, $stream, $cancellation, $combinedCancellation, $cancellationId): void {
     193            try {
     194                $response = $this->readResponse($request, $cancellation, $combinedCancellation, $stream);
     195                if (!$responseDeferred->isComplete()) {
     196                    $responseDeferred->complete($response);
     197                }
     198            } catch (\Throwable $exception) {
     199                $this->socket?->close();
     200                if (!$responseDeferred->isComplete()) {
     201                    $responseDeferred->error($exception);
     202                }
     203            } finally {
     204                $combinedCancellation->unsubscribe($cancellationId);
     205            }
     206        });
     207        return $responseDeferred->getFuture()->await($cancellation);
    192208    }
    193209    private function release(): void
     
    325341            }
    326342            $originalCancellation->throwIfRequested();
     343            $readingCancellation->throwIfRequested();
    327344            throw new SocketException(\sprintf("Receiving the response headers for '%s' failed, because the socket to '%s' @ '%s' closed early with %d bytes received within %0.3f seconds", (string) $request->getUri()->withUserInfo(''), $request->getUri()->withUserInfo('')->getAuthority(), $this->socket?->getRemoteAddress()?->toString() ?? '???', \strlen($parser->getBuffer()), now() - $start));
    328345        } catch (HttpException $e) {
     
    333350            // Throw original cancellation if it was requested.
    334351            $originalCancellation->throwIfRequested();
     352            if ($readingCancellation->isRequested()) {
     353                throw new TimeoutException('Allowed transfer timeout exceeded, took longer than ' . $request->getTransferTimeout() . ' s', 0, $e);
     354            }
    335355            throw new TimeoutException('Inactivity timeout exceeded, more than ' . $timeout . ' seconds elapsed from last data received', 0, $e);
    336356        } catch (\Throwable $e) {
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php

    r3245655 r3257107  
    271271        EventLoop::queue(static function () use ($response, $stream): void {
    272272            try {
    273                 $stream->requestBodyCompletion->getFuture()->await();
     273                $stream->requestHeaderCompletion->getFuture()->await();
    274274                $stream->preResponseResolution?->await();
    275275                $stream->pendingResponse?->complete($response);
     
    596596        $streamId = $this->streamId += 2;
    597597        // Client streams should be odd-numbered, starting at 1.
    598         $this->streams[$streamId] = $http2stream = new Http2Stream($streamId, $request, $stream, $cancellation, $this->createStreamTransferWatcher($streamId, $request->getTransferTimeout()), $this->createStreamInactivityWatcher($streamId, $request->getInactivityTimeout()), self::DEFAULT_WINDOW_SIZE, $this->initialWindowSize);
    599         $cancellationId = $cancellation->subscribe(fn(CancelledException $exception) => $this->releaseStream($streamId, $exception, \false));
     598        $this->streams[$streamId] = $http2stream = new Http2Stream(id: $streamId, request: $request, stream: $stream, cancellation: $cancellation, transferWatcher: $this->createStreamTransferWatcher($streamId, $request->getTransferTimeout()), inactivityWatcher: $this->createStreamInactivityWatcher($streamId, $request->getInactivityTimeout()), serverWindow: self::DEFAULT_WINDOW_SIZE, clientWindow: $this->initialWindowSize);
    600599        $cancellation = $http2stream->cancellation;
    601600        // Use CompositeCancellation from Http2Stream.
     601        $cancellationId = $cancellation->subscribe(fn(CancelledException $exception) => $this->releaseStream($streamId, $exception, \false));
    602602        \assert($http2stream->pendingResponse !== null);
    603603        $responseFuture = $http2stream->pendingResponse->getFuture();
    604604        \assert($http2stream->trailers !== null);
    605605        $http2stream->trailers->getFuture()->finally(static fn() => $cancellation->unsubscribe($cancellationId))->ignore();
    606         try {
     606        async(function () use ($request, $stream, $http2stream, $cancellation): void {
    607607            events()->requestHeaderStart($request, $stream);
    608608            $body = $request->getBody()->getContent();
     
    615615                $firstChunk = \array_shift($split);
    616616                $lastChunk = \array_pop($split);
    617                 $this->writeFrame(Http2Parser::HEADERS, Http2Parser::NO_FLAG, $streamId, $firstChunk)->ignore();
     617                $this->writeFrame(Http2Parser::HEADERS, stream: $http2stream->id, data: $firstChunk)->ignore();
    618618                foreach ($split as $headerChunk) {
    619                     $this->writeFrame(Http2Parser::CONTINUATION, Http2Parser::NO_FLAG, $streamId, $headerChunk)->ignore();
     619                    $this->writeFrame(Http2Parser::CONTINUATION, stream: $http2stream->id, data: $headerChunk)->ignore();
    620620                }
    621                 $this->writeFrame(Http2Parser::CONTINUATION, $flag, $streamId, $lastChunk)->await();
     621                $this->writeFrame(Http2Parser::CONTINUATION, $flag, $http2stream->id, $lastChunk)->await();
    622622            } else {
    623                 $this->writeFrame(Http2Parser::HEADERS, $flag, $streamId, $headers)->await();
    624             }
     623                $this->writeFrame(Http2Parser::HEADERS, $flag, $http2stream->id, $headers)->await();
     624            }
     625            $http2stream->requestHeaderCompletion->complete();
    625626            events()->requestHeaderEnd($request, $stream);
    626627            events()->requestBodyStart($request, $stream);
     
    628629                $http2stream->requestBodyCompletion->complete();
    629630            } else {
    630                 $buffer = $chunk;
    631631                $writeFuture = Future::complete();
    632632                do {
    633                     $chunk = $body->read($cancellation);
    634                     if (!isset($this->streams[$streamId])) {
    635                         // Request stream closed, so this await will throw.
    636                         return $responseFuture->await();
    637                     }
    638633                    // Wait for prior write to complete if we've buffered too much of the request body.
    639634                    if (\strlen($http2stream->requestBodyBuffer) >= self::DEFAULT_MAX_FRAME_SIZE) {
    640635                        $writeFuture->await($cancellation);
    641636                    }
    642                     if ($chunk === null) {
    643                         // Don't move this out of the loop, this needs to be set before calling writeData
    644                         $http2stream->requestBodyCompletion->complete();
    645                     }
    646                     $writeFuture = $this->writeData($http2stream, $buffer);
     637                    $writeFuture = $this->writeData($http2stream, $chunk);
    647638                    events()->requestBodyProgress($request, $stream);
    648                     $buffer = $chunk;
    649                 } while ($buffer !== null);
     639                    $chunk = $body->read($cancellation);
     640                } while ($chunk !== null);
     641                $http2stream->requestBodyCompletion->complete();
    650642                $writeFuture->await($cancellation);
     643                $this->writeBufferedData($http2stream)->await($cancellation);
    651644            }
    652645            events()->requestBodyEnd($request, $stream);
    653         } catch (\Throwable $exception) {
     646        })->catch(function (\Throwable $exception) use ($http2stream, $cancellation, $cancellationId): void {
    654647            $cancellation->unsubscribe($cancellationId);
    655             $exception = $this->wrapException($exception, "Failed to write request (stream {$streamId}) to socket");
     648            $exception = $this->wrapException($exception, "Failed to write request (stream {$http2stream->id}) to socket");
     649            if (!$http2stream->requestHeaderCompletion->isComplete()) {
     650                $http2stream->requestHeaderCompletion->error($exception);
     651            }
    656652            if (!$http2stream->requestBodyCompletion->isComplete()) {
    657653                $http2stream->requestBodyCompletion->error($exception);
    658654            }
    659             $this->releaseStream($streamId, $exception, \false);
    660         }
     655            $this->releaseStream($http2stream->id, $exception, \false);
     656        });
    661657        return $responseFuture->await();
    662658    }
     
    762758    private function writeBufferedData(Http2Stream $stream): Future
    763759    {
    764         if ($stream->requestBodyCompletion->isComplete() && $stream->requestBodyBuffer === '') {
     760        if ($stream->ended) {
    765761            return Future::complete();
    766762        }
     
    782778            if ($stream->requestBodyCompletion->isComplete()) {
    783779                $future = $this->writeFrame(Http2Parser::DATA, Http2Parser::END_STREAM, $stream->id, $stream->requestBodyBuffer);
     780                $stream->ended = \true;
    784781            } else {
    785782                $future = $this->writeFrame(Http2Parser::DATA, Http2Parser::NO_FLAG, $stream->id, $stream->requestBodyBuffer);
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/Connection/Internal/Http2Stream.php

    r3245655 r3257107  
    3535    public int $received = 0;
    3636    public int $bufferSize = 0;
     37    public bool $ended = \false;
    3738    public string $requestBodyBuffer = '';
     39    public readonly DeferredFuture $requestHeaderCompletion;
    3840    public readonly DeferredFuture $requestBodyCompletion;
    3941    /** @var int Integer between 1 and 256 */
     
    4749    {
    4850        $this->pendingResponse = new DeferredFuture();
     51        $this->requestHeaderCompletion = new DeferredFuture();
    4952        $this->requestBodyCompletion = new DeferredFuture();
    5053        $this->body = new Queue();
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/Internal/EventInvoker.php

    r3245655 r3257107  
    126126    {
    127127        $previousPhase = self::getPhase($request);
    128         if ($previousPhase !== Phase::RequestBody) {
     128        if (!\in_array($previousPhase, [Phase::RequestBody, Phase::ServerProcessing, Phase::ResponseHeaders, Phase::ResponseBody], \true)) {
    129129            throw new \Error('Invalid request phase: ' . $previousPhase->name);
    130130        }
     
    134134    {
    135135        $previousPhase = self::getPhase($request);
    136         if ($previousPhase !== Phase::RequestBody) {
     136        if (!\in_array($previousPhase, [Phase::RequestBody, Phase::ServerProcessing, Phase::ResponseHeaders, Phase::ResponseBody], \true)) {
    137137            throw new \Error('Invalid request phase transition from ' . $previousPhase->name . ' to ServerProcessing');
    138138        }
    139         $this->requestPhase[$request] = Phase::ServerProcessing;
     139        if ($previousPhase === Phase::RequestBody) {
     140            $this->requestPhase[$request] = Phase::ServerProcessing;
     141        }
    140142        $this->invoke($request, fn(EventListener $eventListener) => $eventListener->requestBodyEnd($request, $stream));
    141143    }
  • gdata-antivirus/tags/3.0.2/vendor/amphp/http-client/src/SocketException.php

    r3169198 r3257107  
    44namespace GDAVSCOPE\Amp\Http\Client;
    55
    6 final class SocketException extends HttpException
     6class SocketException extends HttpException
    77{
    88}
  • gdata-antivirus/tags/3.0.2/vendor/amphp/pipeline/src/Internal/QueueState.php

    r3245655 r3257107  
    307307        }
    308308        if ($this->disposed) {
    309             if (empty($this->waiting)) {
    310                 $this->triggerDisposal();
    311             }
     309            $this->triggerDisposal();
    312310        } else {
    313311            $this->resolvePending();
  • gdata-antivirus/tags/3.0.2/vendor/composer/autoload_classmap.php

    r3245655 r3257107  
    163163    'GDAVSCOPE\\Amp\\Http\\Client\\StreamedContent' => $vendorDir . '/amphp/http-client/src/StreamedContent.php',
    164164    'GDAVSCOPE\\Amp\\Http\\Client\\TimeoutException' => $vendorDir . '/amphp/http-client/src/TimeoutException.php',
     165    'GDAVSCOPE\\Amp\\Http\\Client\\TlsException' => $vendorDir . '/amphp/http-client/src/TlsException.php',
    165166    'GDAVSCOPE\\Amp\\Http\\Client\\Trailers' => $vendorDir . '/amphp/http-client/src/Trailers.php',
    166167    'GDAVSCOPE\\Amp\\Http\\Cookie\\CookieAttributes' => $vendorDir . '/amphp/http/src/Cookie/CookieAttributes.php',
  • gdata-antivirus/tags/3.0.2/vendor/composer/autoload_static.php

    r3249458 r3257107  
    332332        'GDAVSCOPE\\Amp\\Http\\Client\\StreamedContent' => __DIR__ . '/..' . '/amphp/http-client/src/StreamedContent.php',
    333333        'GDAVSCOPE\\Amp\\Http\\Client\\TimeoutException' => __DIR__ . '/..' . '/amphp/http-client/src/TimeoutException.php',
     334        'GDAVSCOPE\\Amp\\Http\\Client\\TlsException' => __DIR__ . '/..' . '/amphp/http-client/src/TlsException.php',
    334335        'GDAVSCOPE\\Amp\\Http\\Client\\Trailers' => __DIR__ . '/..' . '/amphp/http-client/src/Trailers.php',
    335336        'GDAVSCOPE\\Amp\\Http\\Cookie\\CookieAttributes' => __DIR__ . '/..' . '/amphp/http/src/Cookie/CookieAttributes.php',
  • gdata-antivirus/tags/3.0.2/vendor/composer/installed.json

    r3249458 r3257107  
    8787        {
    8888            "name": "amphp\/byte-stream",
    89             "version": "v2.1.1",
    90             "version_normalized": "2.1.1.0",
     89            "version": "v2.1.2",
     90            "version_normalized": "2.1.2.0",
    9191            "source": {
    9292                "type": "git",
    9393                "url": "https:\/\/github.com\/amphp\/byte-stream.git",
    94                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93"
    95             },
    96             "dist": {
    97                 "type": "zip",
    98                 "url": "https:\/\/api.github.com\/repos\/amphp\/byte-stream\/zipball\/daa00f2efdbd71565bf64ffefa89e37542addf93",
    99                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93",
     94                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46"
     95            },
     96            "dist": {
     97                "type": "zip",
     98                "url": "https:\/\/api.github.com\/repos\/amphp\/byte-stream\/zipball\/55a6bd071aec26fa2a3e002618c20c35e3df1b46",
     99                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46",
    100100                "shasum": ""
    101101            },
     
    115115                "psalm\/phar": "5.22.1"
    116116            },
    117             "time": "2024-02-17T04:49:38+00:00",
     117            "time": "2025-03-16T17:10:27+00:00",
    118118            "type": "library",
    119119            "installation-source": "dist",
     
    153153            "support": {
    154154                "issues": "https:\/\/github.com\/amphp\/byte-stream\/issues",
    155                 "source": "https:\/\/github.com\/amphp\/byte-stream\/tree\/v2.1.1"
     155                "source": "https:\/\/github.com\/amphp\/byte-stream\/tree\/v2.1.2"
    156156            },
    157157            "funding": [
     
    557557        {
    558558            "name": "amphp\/http-client",
    559             "version": "v5.2.2",
    560             "version_normalized": "5.2.2.0",
     559            "version": "v5.3.0",
     560            "version_normalized": "5.3.0.0",
    561561            "source": {
    562562                "type": "git",
    563563                "url": "https:\/\/github.com\/amphp\/http-client.git",
    564                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20"
    565             },
    566             "dist": {
    567                 "type": "zip",
    568                 "url": "https:\/\/api.github.com\/repos\/amphp\/http-client\/zipball\/a3e8711cb71fe909c1ae17450bfa5db652559c20",
    569                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20",
     564                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75"
     565            },
     566            "dist": {
     567                "type": "zip",
     568                "url": "https:\/\/api.github.com\/repos\/amphp\/http-client\/zipball\/d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
     569                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
    570570                "shasum": ""
    571571            },
     
    604604                "ext-zlib": "Allows using compression for response bodies."
    605605            },
    606             "time": "2025-01-12T20:02:49+00:00",
     606            "time": "2025-03-16T17:32:21+00:00",
    607607            "type": "library",
    608608            "installation-source": "dist",
     
    646646            "support": {
    647647                "issues": "https:\/\/github.com\/amphp\/http-client\/issues",
    648                 "source": "https:\/\/github.com\/amphp\/http-client\/tree\/v5.2.2"
     648                "source": "https:\/\/github.com\/amphp\/http-client\/tree\/v5.3.0"
    649649            },
    650650            "funding": [
     
    810810        {
    811811            "name": "amphp\/pipeline",
    812             "version": "v1.2.2",
    813             "version_normalized": "1.2.2.0",
     812            "version": "v1.2.3",
     813            "version_normalized": "1.2.3.0",
    814814            "source": {
    815815                "type": "git",
    816816                "url": "https:\/\/github.com\/amphp\/pipeline.git",
    817                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4"
    818             },
    819             "dist": {
    820                 "type": "zip",
    821                 "url": "https:\/\/api.github.com\/repos\/amphp\/pipeline\/zipball\/97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
    822                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
     817                "reference": "7b52598c2e9105ebcddf247fc523161581930367"
     818            },
     819            "dist": {
     820                "type": "zip",
     821                "url": "https:\/\/api.github.com\/repos\/amphp\/pipeline\/zipball\/7b52598c2e9105ebcddf247fc523161581930367",
     822                "reference": "7b52598c2e9105ebcddf247fc523161581930367",
    823823                "shasum": ""
    824824            },
     
    834834                "psalm\/phar": "^5.18"
    835835            },
    836             "time": "2025-01-19T15:42:46+00:00",
     836            "time": "2025-03-16T16:33:53+00:00",
    837837            "type": "library",
    838838            "installation-source": "dist",
     
    868868            "support": {
    869869                "issues": "https:\/\/github.com\/amphp\/pipeline\/issues",
    870                 "source": "https:\/\/github.com\/amphp\/pipeline\/tree\/v1.2.2"
     870                "source": "https:\/\/github.com\/amphp\/pipeline\/tree\/v1.2.3"
    871871            },
    872872            "funding": [
     
    12751275        {
    12761276            "name": "illuminate\/container",
    1277             "version": "v11.44.0",
    1278             "version_normalized": "11.44.0.0",
     1277            "version": "v11.44.2",
     1278            "version_normalized": "11.44.2.0",
    12791279            "source": {
    12801280                "type": "git",
     
    13291329        {
    13301330            "name": "illuminate\/contracts",
    1331             "version": "v11.44.0",
    1332             "version_normalized": "11.44.0.0",
     1331            "version": "v11.44.2",
     1332            "version_normalized": "11.44.2.0",
    13331333            "source": {
    13341334                "type": "git",
  • gdata-antivirus/tags/3.0.2/vendor/composer/installed.php

    r3249458 r3257107  
    33namespace GDAVSCOPE;
    44
    5 return array('root' => array('name' => 'gdatacyberdefenseag/gdata-antivirus', 'pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('amphp/amp' => array('pretty_version' => 'v3.1.0', 'version' => '3.1.0.0', 'reference' => '7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/amp', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/byte-stream' => array('pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', 'reference' => 'daa00f2efdbd71565bf64ffefa89e37542addf93', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/byte-stream', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/cache' => array('pretty_version' => 'v2.0.1', 'version' => '2.0.1.0', 'reference' => '46912e387e6aa94933b61ea1ead9cf7540b7797c', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/cache', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/dns' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => '78eb3db5fc69bf2fc0cb503c4fcba667bc223c71', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/dns', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/file' => array('pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '28b38a805d2c235bb581d24415e78a42cd03aedc', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/file', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/hpack' => array('pretty_version' => 'v3.2.1', 'version' => '3.2.1.0', 'reference' => '4f293064b15682a2b178b1367ddf0b8b5feb0239', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/hpack', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '3680d80bd38b5d6f3c2cef2214ca6dd6cef26588', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http-client' => array('pretty_version' => 'v5.2.2', 'version' => '5.2.2.0', 'reference' => 'a3e8711cb71fe909c1ae17450bfa5db652559c20', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http-client', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parallel' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '5113111de02796a782f5d90767455e7391cca190', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parallel', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parser' => array('pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', 'reference' => '3cf1f8b32a0171d4b1bed93d25617637a77cded7', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parser', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/pipeline' => array('pretty_version' => 'v1.2.2', 'version' => '1.2.2.0', 'reference' => '97cbf289f4d8877acfe58dd90ed5a4370a43caa4', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/pipeline', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/process' => array('pretty_version' => 'v2.0.3', 'version' => '2.0.3.0', 'reference' => '52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/process', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/serialization' => array('pretty_version' => 'v1.0.0', 'version' => '1.0.0.0', 'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/serialization', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/socket' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '58e0422221825b79681b72c50c47a930be7bf1e1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/socket', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/sync' => array('pretty_version' => 'v2.3.0', 'version' => '2.3.0.0', 'reference' => '217097b785130d77cfcc58ff583cf26cd1770bf1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/sync', 'aliases' => array(), 'dev_requirement' => \false), 'daverandom/libdns' => array('pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'reference' => 'b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a', 'type' => 'library', 'install_path' => __DIR__ . '/../daverandom/libdns', 'aliases' => array(), 'dev_requirement' => \false), 'gdata/vaas' => array('pretty_version' => '11.0.1', 'version' => '11.0.1.0', 'reference' => '32d6c8818479af4b93385277c78bda1262e6c18b', 'type' => 'library', 'install_path' => __DIR__ . '/../gdata/vaas', 'aliases' => array(), 'dev_requirement' => \false), 'gdatacyberdefenseag/gdata-antivirus' => array('pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v11.44.0', 'version' => '11.44.0.0', 'reference' => '4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v11.44.0', 'version' => '11.44.0.0', 'reference' => 'b350a3cd8450846325cb49e1cbc1293598b18898', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'kelunik/certificate' => array('pretty_version' => 'v1.1.3', 'version' => '1.1.3.0', 'reference' => '7e00d498c264d5eb4f78c69f41c8bd6719c0199e', 'type' => 'library', 'install_path' => __DIR__ . '/../kelunik/certificate', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '81fb5145d2644324614cc532b28efd0215bda430', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-components' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-components', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-interfaces' => array('pretty_version' => '7.5.0', 'version' => '7.5.0.0', 'reference' => '08cfc6c4f3d811584fb09c37e2849e6a7f9b0742', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-interfaces', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/http-factory' => array('pretty_version' => '1.1.0', 'version' => '1.1.0.0', 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), 'dev_requirement' => \false), 'psr/http-message' => array('pretty_version' => '2.0', 'version' => '2.0.0.0', 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'revolt/event-loop' => array('pretty_version' => 'v1.0.7', 'version' => '1.0.7.0', 'reference' => '09bf1bf7f7f574453efe43044b06fafe12216eb3', 'type' => 'library', 'install_path' => __DIR__ . '/../revolt/event-loop', 'aliases' => array(), 'dev_requirement' => \false)));
     5return array('root' => array('name' => 'gdatacyberdefenseag/gdata-antivirus', 'pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('amphp/amp' => array('pretty_version' => 'v3.1.0', 'version' => '3.1.0.0', 'reference' => '7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/amp', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/byte-stream' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '55a6bd071aec26fa2a3e002618c20c35e3df1b46', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/byte-stream', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/cache' => array('pretty_version' => 'v2.0.1', 'version' => '2.0.1.0', 'reference' => '46912e387e6aa94933b61ea1ead9cf7540b7797c', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/cache', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/dns' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => '78eb3db5fc69bf2fc0cb503c4fcba667bc223c71', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/dns', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/file' => array('pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '28b38a805d2c235bb581d24415e78a42cd03aedc', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/file', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/hpack' => array('pretty_version' => 'v3.2.1', 'version' => '3.2.1.0', 'reference' => '4f293064b15682a2b178b1367ddf0b8b5feb0239', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/hpack', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '3680d80bd38b5d6f3c2cef2214ca6dd6cef26588', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http-client' => array('pretty_version' => 'v5.3.0', 'version' => '5.3.0.0', 'reference' => 'd50928ec41d4ac3bcec5a01fe1caaf7575cbdc75', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http-client', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parallel' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '5113111de02796a782f5d90767455e7391cca190', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parallel', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parser' => array('pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', 'reference' => '3cf1f8b32a0171d4b1bed93d25617637a77cded7', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parser', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/pipeline' => array('pretty_version' => 'v1.2.3', 'version' => '1.2.3.0', 'reference' => '7b52598c2e9105ebcddf247fc523161581930367', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/pipeline', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/process' => array('pretty_version' => 'v2.0.3', 'version' => '2.0.3.0', 'reference' => '52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/process', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/serialization' => array('pretty_version' => 'v1.0.0', 'version' => '1.0.0.0', 'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/serialization', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/socket' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '58e0422221825b79681b72c50c47a930be7bf1e1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/socket', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/sync' => array('pretty_version' => 'v2.3.0', 'version' => '2.3.0.0', 'reference' => '217097b785130d77cfcc58ff583cf26cd1770bf1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/sync', 'aliases' => array(), 'dev_requirement' => \false), 'daverandom/libdns' => array('pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'reference' => 'b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a', 'type' => 'library', 'install_path' => __DIR__ . '/../daverandom/libdns', 'aliases' => array(), 'dev_requirement' => \false), 'gdata/vaas' => array('pretty_version' => '11.0.1', 'version' => '11.0.1.0', 'reference' => '32d6c8818479af4b93385277c78bda1262e6c18b', 'type' => 'library', 'install_path' => __DIR__ . '/../gdata/vaas', 'aliases' => array(), 'dev_requirement' => \false), 'gdatacyberdefenseag/gdata-antivirus' => array('pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v11.44.2', 'version' => '11.44.2.0', 'reference' => '4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v11.44.2', 'version' => '11.44.2.0', 'reference' => 'b350a3cd8450846325cb49e1cbc1293598b18898', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'kelunik/certificate' => array('pretty_version' => 'v1.1.3', 'version' => '1.1.3.0', 'reference' => '7e00d498c264d5eb4f78c69f41c8bd6719c0199e', 'type' => 'library', 'install_path' => __DIR__ . '/../kelunik/certificate', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '81fb5145d2644324614cc532b28efd0215bda430', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-components' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-components', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-interfaces' => array('pretty_version' => '7.5.0', 'version' => '7.5.0.0', 'reference' => '08cfc6c4f3d811584fb09c37e2849e6a7f9b0742', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-interfaces', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/http-factory' => array('pretty_version' => '1.1.0', 'version' => '1.1.0.0', 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), 'dev_requirement' => \false), 'psr/http-message' => array('pretty_version' => '2.0', 'version' => '2.0.0.0', 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'revolt/event-loop' => array('pretty_version' => 'v1.0.7', 'version' => '1.0.7.0', 'reference' => '09bf1bf7f7f574453efe43044b06fafe12216eb3', 'type' => 'library', 'install_path' => __DIR__ . '/../revolt/event-loop', 'aliases' => array(), 'dev_requirement' => \false)));
  • gdata-antivirus/trunk/Readme.txt

    r3249458 r3257107  
    55Tested up to: 6.7
    66Requires PHP: 8.1
    7 Stable tag: 3.0.1
     7Stable tag: 3.0.2
    88License: GNU General Public License v3.0
    99License URI: https://github.com/GDATASoftwareAG/vaas/blob/main/LICENSE
     
    5656
    5757== Changelog ==
     58
     59= 3.0.2 =
     60
     61* Show error message for wrong credentials
    5862
    5963= 3.0.1 =
  • gdata-antivirus/trunk/Vaas/ScanClient.php

    r3245655 r3257107  
    33namespace Gdatacyberdefenseag\GdataAntivirus\Vaas;
    44
     5use Exception;
    56use Gdatacyberdefenseag\GdataAntivirus\Infrastructure\FileSystem\IGdataAntivirusFileSystem;
    67use Gdatacyberdefenseag\GdataAntivirus\PluginPage\AdminNoticesInterface;
     
    4849                add_filter('wp_insert_post_data', array($this, 'scan_post'), 10, 1);
    4950            }
     51            add_action('admin_notices', array($this, 'credentials_check_admin_notice'));
     52            $this->connect();
    5053        }
    5154        public function reconnect()
     
    5457            $this->connect();
    5558        }
    56         public function connect()
     59        public function credentials_check_admin_notice()
     60        {
     61            if ($this->vaas_options->credentials_configured()) {
     62                if ($this->connect() === \false) {
     63                    echo '<div class="notice notice-error is-dismissible">
     64                    <p>VaaS - Error: The credentials did not work. Please check the settings.</p>
     65                    </div>';
     66                }
     67            }
     68        }
     69        public function connect(): bool
    5770        {
    5871            if ($this->connected === \true) {
    59                 return;
     72                return \true;
    6073            }
    6174            $options = $this->vaas_options->get_options();
     
    6578            $vaas_parameters->vaasUrl = $options['vaas_url'];
    6679            if (!$this->vaas_options->credentials_configured()) {
    67                 return;
     80                return \false;
    6881            }
    6982            if ($options['authentication_method'] == 'ResourceOwnerPasswordGrant') {
    70                 $resource_owner_password_grant_authenticator = new ResourceOwnerPasswordGrantAuthenticator('wordpress-customer', $options['username'], $options['password'], $options['token_endpoint']);
    71                 $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($resource_owner_password_grant_authenticator)->build();
     83                $authenticator = new ResourceOwnerPasswordGrantAuthenticator('wordpress-customer', $options['username'], $options['password'], $options['token_endpoint']);
     84                $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($authenticator)->build();
    7285            } else {
    73                 $client_credentials_grant_authenticator = new ClientCredentialsGrantAuthenticator($options['client_id'], $options['client_secret'], $options['token_endpoint']);
    74                 $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($client_credentials_grant_authenticator)->build();
     86                $authenticator = new ClientCredentialsGrantAuthenticator($options['client_id'], $options['client_secret'], $options['token_endpoint']);
     87                $this->vaas = Vaas::builder()->withOptions($vaas_parameters)->withAuthenticator($authenticator)->build();
     88            }
     89            try {
     90                $authenticator->getTokenAsync()->await();
     91            } catch (Exception $e) {
     92                return \false;
    7593            }
    7694            $this->connected = \true;
     95            return \true;
    7796        }
    7897        public function scan_post($data)
  • gdata-antivirus/trunk/composer.json

    r3249458 r3257107  
    11{
    22    "name": "gdatacyberdefenseag\/gdata-antivirus",
    3     "version": "3.0.1",
     3    "version": "3.0.2",
    44    "autoload": {
    55        "psr-4": {
  • gdata-antivirus/trunk/composer.lock

    r3249458 r3257107  
    9090        {
    9191            "name": "amphp/byte-stream",
    92             "version": "v2.1.1",
     92            "version": "v2.1.2",
    9393            "source": {
    9494                "type": "git",
    9595                "url": "https://github.com/amphp/byte-stream.git",
    96                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93"
    97             },
    98             "dist": {
    99                 "type": "zip",
    100                 "url": "https://api.github.com/repos/amphp/byte-stream/zipball/daa00f2efdbd71565bf64ffefa89e37542addf93",
    101                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93",
     96                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46"
     97            },
     98            "dist": {
     99                "type": "zip",
     100                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/55a6bd071aec26fa2a3e002618c20c35e3df1b46",
     101                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46",
    102102                "shasum": ""
    103103            },
     
    153153            "support": {
    154154                "issues": "https://github.com/amphp/byte-stream/issues",
    155                 "source": "https://github.com/amphp/byte-stream/tree/v2.1.1"
     155                "source": "https://github.com/amphp/byte-stream/tree/v2.1.2"
    156156            },
    157157            "funding": [
     
    161161                }
    162162            ],
    163             "time": "2024-02-17T04:49:38+00:00"
     163            "time": "2025-03-16T17:10:27+00:00"
    164164        },
    165165        {
     
    542542        {
    543543            "name": "amphp/http-client",
    544             "version": "v5.2.2",
     544            "version": "v5.3.0",
    545545            "source": {
    546546                "type": "git",
    547547                "url": "https://github.com/amphp/http-client.git",
    548                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20"
    549             },
    550             "dist": {
    551                 "type": "zip",
    552                 "url": "https://api.github.com/repos/amphp/http-client/zipball/a3e8711cb71fe909c1ae17450bfa5db652559c20",
    553                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20",
     548                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75"
     549            },
     550            "dist": {
     551                "type": "zip",
     552                "url": "https://api.github.com/repos/amphp/http-client/zipball/d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
     553                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
    554554                "shasum": ""
    555555            },
     
    628628            "support": {
    629629                "issues": "https://github.com/amphp/http-client/issues",
    630                 "source": "https://github.com/amphp/http-client/tree/v5.2.2"
     630                "source": "https://github.com/amphp/http-client/tree/v5.3.0"
    631631            },
    632632            "funding": [
     
    636636                }
    637637            ],
    638             "time": "2025-01-12T20:02:49+00:00"
     638            "time": "2025-03-16T17:32:21+00:00"
    639639        },
    640640        {
     
    786786        {
    787787            "name": "amphp/pipeline",
    788             "version": "v1.2.2",
     788            "version": "v1.2.3",
    789789            "source": {
    790790                "type": "git",
    791791                "url": "https://github.com/amphp/pipeline.git",
    792                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4"
    793             },
    794             "dist": {
    795                 "type": "zip",
    796                 "url": "https://api.github.com/repos/amphp/pipeline/zipball/97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
    797                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
     792                "reference": "7b52598c2e9105ebcddf247fc523161581930367"
     793            },
     794            "dist": {
     795                "type": "zip",
     796                "url": "https://api.github.com/repos/amphp/pipeline/zipball/7b52598c2e9105ebcddf247fc523161581930367",
     797                "reference": "7b52598c2e9105ebcddf247fc523161581930367",
    798798                "shasum": ""
    799799            },
     
    841841            "support": {
    842842                "issues": "https://github.com/amphp/pipeline/issues",
    843                 "source": "https://github.com/amphp/pipeline/tree/v1.2.2"
     843                "source": "https://github.com/amphp/pipeline/tree/v1.2.3"
    844844            },
    845845            "funding": [
     
    849849                }
    850850            ],
    851             "time": "2025-01-19T15:42:46+00:00"
     851            "time": "2025-03-16T16:33:53+00:00"
    852852        },
    853853        {
     
    12301230        {
    12311231            "name": "illuminate/container",
    1232             "version": "v11.44.0",
     1232            "version": "v11.44.2",
    12331233            "source": {
    12341234                "type": "git",
     
    12811281        {
    12821282            "name": "illuminate/contracts",
    1283             "version": "v11.44.0",
     1283            "version": "v11.44.2",
    12841284            "source": {
    12851285                "type": "git",
     
    29302930        {
    29312931            "name": "phpunit/phpunit",
    2932             "version": "11.5.10",
     2932            "version": "11.5.12",
    29332933            "source": {
    29342934                "type": "git",
    29352935                "url": "https://github.com/sebastianbergmann/phpunit.git",
    2936                 "reference": "d5df2b32d729562ff8db634678d71085ee579006"
    2937             },
    2938             "dist": {
    2939                 "type": "zip",
    2940                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d5df2b32d729562ff8db634678d71085ee579006",
    2941                 "reference": "d5df2b32d729562ff8db634678d71085ee579006",
     2936                "reference": "d42785840519401ed2113292263795eb4c0f95da"
     2937            },
     2938            "dist": {
     2939                "type": "zip",
     2940                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d42785840519401ed2113292263795eb4c0f95da",
     2941                "reference": "d42785840519401ed2113292263795eb4c0f95da",
    29422942                "shasum": ""
    29432943            },
     
    29532953                "phar-io/version": "^3.2.1",
    29542954                "php": ">=8.2",
    2955                 "phpunit/php-code-coverage": "^11.0.8",
     2955                "phpunit/php-code-coverage": "^11.0.9",
    29562956                "phpunit/php-file-iterator": "^5.1.0",
    29572957                "phpunit/php-invoker": "^5.0.1",
     
    29602960                "sebastian/cli-parser": "^3.0.2",
    29612961                "sebastian/code-unit": "^3.0.2",
    2962                 "sebastian/comparator": "^6.3.0",
     2962                "sebastian/comparator": "^6.3.1",
    29632963                "sebastian/diff": "^6.0.2",
    29642964                "sebastian/environment": "^7.2.0",
     
    30113011                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
    30123012                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
    3013                 "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.10"
     3013                "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.12"
    30143014            },
    30153015            "funding": [
     
    30273027                }
    30283028            ],
    3029             "time": "2025-02-25T06:11:48+00:00"
     3029            "time": "2025-03-07T07:31:03+00:00"
    30303030        },
    30313031        {
     
    32013201        {
    32023202            "name": "sebastian/comparator",
    3203             "version": "6.3.0",
     3203            "version": "6.3.1",
    32043204            "source": {
    32053205                "type": "git",
    32063206                "url": "https://github.com/sebastianbergmann/comparator.git",
    3207                 "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115"
    3208             },
    3209             "dist": {
    3210                 "type": "zip",
    3211                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
    3212                 "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115",
     3207                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959"
     3208            },
     3209            "dist": {
     3210                "type": "zip",
     3211                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
     3212                "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
    32133213                "shasum": ""
    32143214            },
     
    32293229            "extra": {
    32303230                "branch-alias": {
    3231                     "dev-main": "6.2-dev"
     3231                    "dev-main": "6.3-dev"
    32323232                }
    32333233            },
     
    32693269                "issues": "https://github.com/sebastianbergmann/comparator/issues",
    32703270                "security": "https://github.com/sebastianbergmann/comparator/security/policy",
    3271                 "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0"
     3271                "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1"
    32723272            },
    32733273            "funding": [
     
    32773277                }
    32783278            ],
    3279             "time": "2025-01-06T10:28:19+00:00"
     3279            "time": "2025-03-07T06:57:01+00:00"
    32803280        },
    32813281        {
  • gdata-antivirus/trunk/gdata-antivirus.php

    r3249458 r3257107  
    1212 * @wordpress-plugin
    1313 * Plugin Name: G DATA Antivirus
    14  * Version: 3.0.1
     14 * Version: 3.0.2
    1515 * Requires at least: 6.2
    1616 * Tested up to: 6.6
  • gdata-antivirus/trunk/vendor/amphp/byte-stream/src/ReadableIterableStream.php

    r3169198 r3257107  
    1010use GDAVSCOPE\Amp\ForbidSerialization;
    1111use GDAVSCOPE\Amp\Pipeline\ConcurrentIterator;
     12use GDAVSCOPE\Amp\Pipeline\DisposedException;
    1213use GDAVSCOPE\Amp\Pipeline\Pipeline;
    1314/**
     
    6364                // Read cancelled, stream did not fail.
    6465            }
     66            if ($exception instanceof DisposedException) {
     67                $exception = new ClosedException('Stream manually closed', previous: $exception);
     68            }
    6569            throw $this->exception = $exception;
    6670        } finally {
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php

    r3245655 r3257107  
    1212use GDAVSCOPE\Amp\Http\Client\SocketException;
    1313use GDAVSCOPE\Amp\Http\Client\TimeoutException;
     14use GDAVSCOPE\Amp\Http\Client\TlsException;
    1415use GDAVSCOPE\Amp\Socket;
    1516use GDAVSCOPE\Amp\Socket\ClientTlsContext;
     
    8485                if ($tlsState !== Socket\TlsState::Disabled) {
    8586                    $socket->close();
    86                     throw new SocketException('Failed to setup TLS connection, connection was in an unexpected TLS state (' . $tlsState->name . ')');
     87                    throw new TlsException('Failed to setup TLS connection, connection was in an unexpected TLS state (' . $tlsState->name . ')');
    8788                }
    8889                $socket->setupTls(new CompositeCancellation($cancellation, new TimeoutCancellation($request->getTlsHandshakeTimeout())));
    8990            } catch (StreamException $streamException) {
    9091                $socket->close();
    91                 throw new SocketException(\sprintf("Connection to '%s' @ '%s' closed during TLS handshake", $authority, $socket->getRemoteAddress()->toString()), 0, $streamException);
     92                $errorMessage = $streamException->getMessage();
     93                \preg_match('/error:[0-9a-f]*:[^:]*:[^:]*:(.+)$/i', $errorMessage, $matches);
     94                $errorMessage = \trim($matches[1] ?? \explode('():', $errorMessage, 2)[1] ?? $errorMessage);
     95                throw new TlsException(\sprintf("Connection to '%s' @ '%s' closed during TLS handshake: %s", $authority, $socket->getRemoteAddress()->toString(), $errorMessage), 0, $streamException);
    9296            } catch (CancelledException) {
    9397                $socket->close();
     
    100104            if ($tlsInfo === null) {
    101105                $socket->close();
    102                 throw new SocketException(\sprintf("Socket closed after TLS handshake with '%s' @ '%s'", $authority, $socket->getRemoteAddress()->toString()));
     106                throw new TlsException(\sprintf("Socket closed after TLS handshake with '%s' @ '%s'", $authority, $socket->getRemoteAddress()->toString()));
    103107            }
    104108            $tlsHandshakeDuration = now() - $tlsHandshakeStart;
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/Connection/Http1Connection.php

    r3245655 r3257107  
    179179            $combinedCancellation = $cancellation;
    180180        }
    181         $id = $combinedCancellation->subscribe($this->close(...));
    182         try {
    183             $this->writeRequest($request, $stream, $protocolVersion, $combinedCancellation);
    184             return $this->readResponse($request, $cancellation, $combinedCancellation, $stream);
    185         } catch (\Throwable $exception) {
    186             $this->socket?->close();
    187             throw $exception;
    188         } finally {
    189             $combinedCancellation->unsubscribe($id);
    190             $cancellation->throwIfRequested();
    191         }
     181        $cancellationId = $combinedCancellation->subscribe($this->close(...));
     182        $responseDeferred = new DeferredFuture();
     183        EventLoop::queue(function () use ($responseDeferred, $request, $stream, $protocolVersion, $combinedCancellation): void {
     184            try {
     185                $this->writeRequest($request, $stream, $protocolVersion, $combinedCancellation);
     186            } catch (\Throwable $exception) {
     187                if (!$responseDeferred->isComplete()) {
     188                    $responseDeferred->error($exception);
     189                }
     190            }
     191        });
     192        EventLoop::queue(function () use ($responseDeferred, $request, $stream, $cancellation, $combinedCancellation, $cancellationId): void {
     193            try {
     194                $response = $this->readResponse($request, $cancellation, $combinedCancellation, $stream);
     195                if (!$responseDeferred->isComplete()) {
     196                    $responseDeferred->complete($response);
     197                }
     198            } catch (\Throwable $exception) {
     199                $this->socket?->close();
     200                if (!$responseDeferred->isComplete()) {
     201                    $responseDeferred->error($exception);
     202                }
     203            } finally {
     204                $combinedCancellation->unsubscribe($cancellationId);
     205            }
     206        });
     207        return $responseDeferred->getFuture()->await($cancellation);
    192208    }
    193209    private function release(): void
     
    325341            }
    326342            $originalCancellation->throwIfRequested();
     343            $readingCancellation->throwIfRequested();
    327344            throw new SocketException(\sprintf("Receiving the response headers for '%s' failed, because the socket to '%s' @ '%s' closed early with %d bytes received within %0.3f seconds", (string) $request->getUri()->withUserInfo(''), $request->getUri()->withUserInfo('')->getAuthority(), $this->socket?->getRemoteAddress()?->toString() ?? '???', \strlen($parser->getBuffer()), now() - $start));
    328345        } catch (HttpException $e) {
     
    333350            // Throw original cancellation if it was requested.
    334351            $originalCancellation->throwIfRequested();
     352            if ($readingCancellation->isRequested()) {
     353                throw new TimeoutException('Allowed transfer timeout exceeded, took longer than ' . $request->getTransferTimeout() . ' s', 0, $e);
     354            }
    335355            throw new TimeoutException('Inactivity timeout exceeded, more than ' . $timeout . ' seconds elapsed from last data received', 0, $e);
    336356        } catch (\Throwable $e) {
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php

    r3245655 r3257107  
    271271        EventLoop::queue(static function () use ($response, $stream): void {
    272272            try {
    273                 $stream->requestBodyCompletion->getFuture()->await();
     273                $stream->requestHeaderCompletion->getFuture()->await();
    274274                $stream->preResponseResolution?->await();
    275275                $stream->pendingResponse?->complete($response);
     
    596596        $streamId = $this->streamId += 2;
    597597        // Client streams should be odd-numbered, starting at 1.
    598         $this->streams[$streamId] = $http2stream = new Http2Stream($streamId, $request, $stream, $cancellation, $this->createStreamTransferWatcher($streamId, $request->getTransferTimeout()), $this->createStreamInactivityWatcher($streamId, $request->getInactivityTimeout()), self::DEFAULT_WINDOW_SIZE, $this->initialWindowSize);
    599         $cancellationId = $cancellation->subscribe(fn(CancelledException $exception) => $this->releaseStream($streamId, $exception, \false));
     598        $this->streams[$streamId] = $http2stream = new Http2Stream(id: $streamId, request: $request, stream: $stream, cancellation: $cancellation, transferWatcher: $this->createStreamTransferWatcher($streamId, $request->getTransferTimeout()), inactivityWatcher: $this->createStreamInactivityWatcher($streamId, $request->getInactivityTimeout()), serverWindow: self::DEFAULT_WINDOW_SIZE, clientWindow: $this->initialWindowSize);
    600599        $cancellation = $http2stream->cancellation;
    601600        // Use CompositeCancellation from Http2Stream.
     601        $cancellationId = $cancellation->subscribe(fn(CancelledException $exception) => $this->releaseStream($streamId, $exception, \false));
    602602        \assert($http2stream->pendingResponse !== null);
    603603        $responseFuture = $http2stream->pendingResponse->getFuture();
    604604        \assert($http2stream->trailers !== null);
    605605        $http2stream->trailers->getFuture()->finally(static fn() => $cancellation->unsubscribe($cancellationId))->ignore();
    606         try {
     606        async(function () use ($request, $stream, $http2stream, $cancellation): void {
    607607            events()->requestHeaderStart($request, $stream);
    608608            $body = $request->getBody()->getContent();
     
    615615                $firstChunk = \array_shift($split);
    616616                $lastChunk = \array_pop($split);
    617                 $this->writeFrame(Http2Parser::HEADERS, Http2Parser::NO_FLAG, $streamId, $firstChunk)->ignore();
     617                $this->writeFrame(Http2Parser::HEADERS, stream: $http2stream->id, data: $firstChunk)->ignore();
    618618                foreach ($split as $headerChunk) {
    619                     $this->writeFrame(Http2Parser::CONTINUATION, Http2Parser::NO_FLAG, $streamId, $headerChunk)->ignore();
     619                    $this->writeFrame(Http2Parser::CONTINUATION, stream: $http2stream->id, data: $headerChunk)->ignore();
    620620                }
    621                 $this->writeFrame(Http2Parser::CONTINUATION, $flag, $streamId, $lastChunk)->await();
     621                $this->writeFrame(Http2Parser::CONTINUATION, $flag, $http2stream->id, $lastChunk)->await();
    622622            } else {
    623                 $this->writeFrame(Http2Parser::HEADERS, $flag, $streamId, $headers)->await();
    624             }
     623                $this->writeFrame(Http2Parser::HEADERS, $flag, $http2stream->id, $headers)->await();
     624            }
     625            $http2stream->requestHeaderCompletion->complete();
    625626            events()->requestHeaderEnd($request, $stream);
    626627            events()->requestBodyStart($request, $stream);
     
    628629                $http2stream->requestBodyCompletion->complete();
    629630            } else {
    630                 $buffer = $chunk;
    631631                $writeFuture = Future::complete();
    632632                do {
    633                     $chunk = $body->read($cancellation);
    634                     if (!isset($this->streams[$streamId])) {
    635                         // Request stream closed, so this await will throw.
    636                         return $responseFuture->await();
    637                     }
    638633                    // Wait for prior write to complete if we've buffered too much of the request body.
    639634                    if (\strlen($http2stream->requestBodyBuffer) >= self::DEFAULT_MAX_FRAME_SIZE) {
    640635                        $writeFuture->await($cancellation);
    641636                    }
    642                     if ($chunk === null) {
    643                         // Don't move this out of the loop, this needs to be set before calling writeData
    644                         $http2stream->requestBodyCompletion->complete();
    645                     }
    646                     $writeFuture = $this->writeData($http2stream, $buffer);
     637                    $writeFuture = $this->writeData($http2stream, $chunk);
    647638                    events()->requestBodyProgress($request, $stream);
    648                     $buffer = $chunk;
    649                 } while ($buffer !== null);
     639                    $chunk = $body->read($cancellation);
     640                } while ($chunk !== null);
     641                $http2stream->requestBodyCompletion->complete();
    650642                $writeFuture->await($cancellation);
     643                $this->writeBufferedData($http2stream)->await($cancellation);
    651644            }
    652645            events()->requestBodyEnd($request, $stream);
    653         } catch (\Throwable $exception) {
     646        })->catch(function (\Throwable $exception) use ($http2stream, $cancellation, $cancellationId): void {
    654647            $cancellation->unsubscribe($cancellationId);
    655             $exception = $this->wrapException($exception, "Failed to write request (stream {$streamId}) to socket");
     648            $exception = $this->wrapException($exception, "Failed to write request (stream {$http2stream->id}) to socket");
     649            if (!$http2stream->requestHeaderCompletion->isComplete()) {
     650                $http2stream->requestHeaderCompletion->error($exception);
     651            }
    656652            if (!$http2stream->requestBodyCompletion->isComplete()) {
    657653                $http2stream->requestBodyCompletion->error($exception);
    658654            }
    659             $this->releaseStream($streamId, $exception, \false);
    660         }
     655            $this->releaseStream($http2stream->id, $exception, \false);
     656        });
    661657        return $responseFuture->await();
    662658    }
     
    762758    private function writeBufferedData(Http2Stream $stream): Future
    763759    {
    764         if ($stream->requestBodyCompletion->isComplete() && $stream->requestBodyBuffer === '') {
     760        if ($stream->ended) {
    765761            return Future::complete();
    766762        }
     
    782778            if ($stream->requestBodyCompletion->isComplete()) {
    783779                $future = $this->writeFrame(Http2Parser::DATA, Http2Parser::END_STREAM, $stream->id, $stream->requestBodyBuffer);
     780                $stream->ended = \true;
    784781            } else {
    785782                $future = $this->writeFrame(Http2Parser::DATA, Http2Parser::NO_FLAG, $stream->id, $stream->requestBodyBuffer);
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/Connection/Internal/Http2Stream.php

    r3245655 r3257107  
    3535    public int $received = 0;
    3636    public int $bufferSize = 0;
     37    public bool $ended = \false;
    3738    public string $requestBodyBuffer = '';
     39    public readonly DeferredFuture $requestHeaderCompletion;
    3840    public readonly DeferredFuture $requestBodyCompletion;
    3941    /** @var int Integer between 1 and 256 */
     
    4749    {
    4850        $this->pendingResponse = new DeferredFuture();
     51        $this->requestHeaderCompletion = new DeferredFuture();
    4952        $this->requestBodyCompletion = new DeferredFuture();
    5053        $this->body = new Queue();
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/Internal/EventInvoker.php

    r3245655 r3257107  
    126126    {
    127127        $previousPhase = self::getPhase($request);
    128         if ($previousPhase !== Phase::RequestBody) {
     128        if (!\in_array($previousPhase, [Phase::RequestBody, Phase::ServerProcessing, Phase::ResponseHeaders, Phase::ResponseBody], \true)) {
    129129            throw new \Error('Invalid request phase: ' . $previousPhase->name);
    130130        }
     
    134134    {
    135135        $previousPhase = self::getPhase($request);
    136         if ($previousPhase !== Phase::RequestBody) {
     136        if (!\in_array($previousPhase, [Phase::RequestBody, Phase::ServerProcessing, Phase::ResponseHeaders, Phase::ResponseBody], \true)) {
    137137            throw new \Error('Invalid request phase transition from ' . $previousPhase->name . ' to ServerProcessing');
    138138        }
    139         $this->requestPhase[$request] = Phase::ServerProcessing;
     139        if ($previousPhase === Phase::RequestBody) {
     140            $this->requestPhase[$request] = Phase::ServerProcessing;
     141        }
    140142        $this->invoke($request, fn(EventListener $eventListener) => $eventListener->requestBodyEnd($request, $stream));
    141143    }
  • gdata-antivirus/trunk/vendor/amphp/http-client/src/SocketException.php

    r3169198 r3257107  
    44namespace GDAVSCOPE\Amp\Http\Client;
    55
    6 final class SocketException extends HttpException
     6class SocketException extends HttpException
    77{
    88}
  • gdata-antivirus/trunk/vendor/amphp/pipeline/src/Internal/QueueState.php

    r3245655 r3257107  
    307307        }
    308308        if ($this->disposed) {
    309             if (empty($this->waiting)) {
    310                 $this->triggerDisposal();
    311             }
     309            $this->triggerDisposal();
    312310        } else {
    313311            $this->resolvePending();
  • gdata-antivirus/trunk/vendor/composer/autoload_classmap.php

    r3245655 r3257107  
    163163    'GDAVSCOPE\\Amp\\Http\\Client\\StreamedContent' => $vendorDir . '/amphp/http-client/src/StreamedContent.php',
    164164    'GDAVSCOPE\\Amp\\Http\\Client\\TimeoutException' => $vendorDir . '/amphp/http-client/src/TimeoutException.php',
     165    'GDAVSCOPE\\Amp\\Http\\Client\\TlsException' => $vendorDir . '/amphp/http-client/src/TlsException.php',
    165166    'GDAVSCOPE\\Amp\\Http\\Client\\Trailers' => $vendorDir . '/amphp/http-client/src/Trailers.php',
    166167    'GDAVSCOPE\\Amp\\Http\\Cookie\\CookieAttributes' => $vendorDir . '/amphp/http/src/Cookie/CookieAttributes.php',
  • gdata-antivirus/trunk/vendor/composer/autoload_static.php

    r3249458 r3257107  
    332332        'GDAVSCOPE\\Amp\\Http\\Client\\StreamedContent' => __DIR__ . '/..' . '/amphp/http-client/src/StreamedContent.php',
    333333        'GDAVSCOPE\\Amp\\Http\\Client\\TimeoutException' => __DIR__ . '/..' . '/amphp/http-client/src/TimeoutException.php',
     334        'GDAVSCOPE\\Amp\\Http\\Client\\TlsException' => __DIR__ . '/..' . '/amphp/http-client/src/TlsException.php',
    334335        'GDAVSCOPE\\Amp\\Http\\Client\\Trailers' => __DIR__ . '/..' . '/amphp/http-client/src/Trailers.php',
    335336        'GDAVSCOPE\\Amp\\Http\\Cookie\\CookieAttributes' => __DIR__ . '/..' . '/amphp/http/src/Cookie/CookieAttributes.php',
  • gdata-antivirus/trunk/vendor/composer/installed.json

    r3249458 r3257107  
    8787        {
    8888            "name": "amphp\/byte-stream",
    89             "version": "v2.1.1",
    90             "version_normalized": "2.1.1.0",
     89            "version": "v2.1.2",
     90            "version_normalized": "2.1.2.0",
    9191            "source": {
    9292                "type": "git",
    9393                "url": "https:\/\/github.com\/amphp\/byte-stream.git",
    94                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93"
    95             },
    96             "dist": {
    97                 "type": "zip",
    98                 "url": "https:\/\/api.github.com\/repos\/amphp\/byte-stream\/zipball\/daa00f2efdbd71565bf64ffefa89e37542addf93",
    99                 "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93",
     94                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46"
     95            },
     96            "dist": {
     97                "type": "zip",
     98                "url": "https:\/\/api.github.com\/repos\/amphp\/byte-stream\/zipball\/55a6bd071aec26fa2a3e002618c20c35e3df1b46",
     99                "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46",
    100100                "shasum": ""
    101101            },
     
    115115                "psalm\/phar": "5.22.1"
    116116            },
    117             "time": "2024-02-17T04:49:38+00:00",
     117            "time": "2025-03-16T17:10:27+00:00",
    118118            "type": "library",
    119119            "installation-source": "dist",
     
    153153            "support": {
    154154                "issues": "https:\/\/github.com\/amphp\/byte-stream\/issues",
    155                 "source": "https:\/\/github.com\/amphp\/byte-stream\/tree\/v2.1.1"
     155                "source": "https:\/\/github.com\/amphp\/byte-stream\/tree\/v2.1.2"
    156156            },
    157157            "funding": [
     
    557557        {
    558558            "name": "amphp\/http-client",
    559             "version": "v5.2.2",
    560             "version_normalized": "5.2.2.0",
     559            "version": "v5.3.0",
     560            "version_normalized": "5.3.0.0",
    561561            "source": {
    562562                "type": "git",
    563563                "url": "https:\/\/github.com\/amphp\/http-client.git",
    564                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20"
    565             },
    566             "dist": {
    567                 "type": "zip",
    568                 "url": "https:\/\/api.github.com\/repos\/amphp\/http-client\/zipball\/a3e8711cb71fe909c1ae17450bfa5db652559c20",
    569                 "reference": "a3e8711cb71fe909c1ae17450bfa5db652559c20",
     564                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75"
     565            },
     566            "dist": {
     567                "type": "zip",
     568                "url": "https:\/\/api.github.com\/repos\/amphp\/http-client\/zipball\/d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
     569                "reference": "d50928ec41d4ac3bcec5a01fe1caaf7575cbdc75",
    570570                "shasum": ""
    571571            },
     
    604604                "ext-zlib": "Allows using compression for response bodies."
    605605            },
    606             "time": "2025-01-12T20:02:49+00:00",
     606            "time": "2025-03-16T17:32:21+00:00",
    607607            "type": "library",
    608608            "installation-source": "dist",
     
    646646            "support": {
    647647                "issues": "https:\/\/github.com\/amphp\/http-client\/issues",
    648                 "source": "https:\/\/github.com\/amphp\/http-client\/tree\/v5.2.2"
     648                "source": "https:\/\/github.com\/amphp\/http-client\/tree\/v5.3.0"
    649649            },
    650650            "funding": [
     
    810810        {
    811811            "name": "amphp\/pipeline",
    812             "version": "v1.2.2",
    813             "version_normalized": "1.2.2.0",
     812            "version": "v1.2.3",
     813            "version_normalized": "1.2.3.0",
    814814            "source": {
    815815                "type": "git",
    816816                "url": "https:\/\/github.com\/amphp\/pipeline.git",
    817                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4"
    818             },
    819             "dist": {
    820                 "type": "zip",
    821                 "url": "https:\/\/api.github.com\/repos\/amphp\/pipeline\/zipball\/97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
    822                 "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
     817                "reference": "7b52598c2e9105ebcddf247fc523161581930367"
     818            },
     819            "dist": {
     820                "type": "zip",
     821                "url": "https:\/\/api.github.com\/repos\/amphp\/pipeline\/zipball\/7b52598c2e9105ebcddf247fc523161581930367",
     822                "reference": "7b52598c2e9105ebcddf247fc523161581930367",
    823823                "shasum": ""
    824824            },
     
    834834                "psalm\/phar": "^5.18"
    835835            },
    836             "time": "2025-01-19T15:42:46+00:00",
     836            "time": "2025-03-16T16:33:53+00:00",
    837837            "type": "library",
    838838            "installation-source": "dist",
     
    868868            "support": {
    869869                "issues": "https:\/\/github.com\/amphp\/pipeline\/issues",
    870                 "source": "https:\/\/github.com\/amphp\/pipeline\/tree\/v1.2.2"
     870                "source": "https:\/\/github.com\/amphp\/pipeline\/tree\/v1.2.3"
    871871            },
    872872            "funding": [
     
    12751275        {
    12761276            "name": "illuminate\/container",
    1277             "version": "v11.44.0",
    1278             "version_normalized": "11.44.0.0",
     1277            "version": "v11.44.2",
     1278            "version_normalized": "11.44.2.0",
    12791279            "source": {
    12801280                "type": "git",
     
    13291329        {
    13301330            "name": "illuminate\/contracts",
    1331             "version": "v11.44.0",
    1332             "version_normalized": "11.44.0.0",
     1331            "version": "v11.44.2",
     1332            "version_normalized": "11.44.2.0",
    13331333            "source": {
    13341334                "type": "git",
  • gdata-antivirus/trunk/vendor/composer/installed.php

    r3249458 r3257107  
    33namespace GDAVSCOPE;
    44
    5 return array('root' => array('name' => 'gdatacyberdefenseag/gdata-antivirus', 'pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('amphp/amp' => array('pretty_version' => 'v3.1.0', 'version' => '3.1.0.0', 'reference' => '7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/amp', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/byte-stream' => array('pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', 'reference' => 'daa00f2efdbd71565bf64ffefa89e37542addf93', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/byte-stream', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/cache' => array('pretty_version' => 'v2.0.1', 'version' => '2.0.1.0', 'reference' => '46912e387e6aa94933b61ea1ead9cf7540b7797c', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/cache', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/dns' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => '78eb3db5fc69bf2fc0cb503c4fcba667bc223c71', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/dns', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/file' => array('pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '28b38a805d2c235bb581d24415e78a42cd03aedc', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/file', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/hpack' => array('pretty_version' => 'v3.2.1', 'version' => '3.2.1.0', 'reference' => '4f293064b15682a2b178b1367ddf0b8b5feb0239', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/hpack', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '3680d80bd38b5d6f3c2cef2214ca6dd6cef26588', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http-client' => array('pretty_version' => 'v5.2.2', 'version' => '5.2.2.0', 'reference' => 'a3e8711cb71fe909c1ae17450bfa5db652559c20', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http-client', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parallel' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '5113111de02796a782f5d90767455e7391cca190', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parallel', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parser' => array('pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', 'reference' => '3cf1f8b32a0171d4b1bed93d25617637a77cded7', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parser', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/pipeline' => array('pretty_version' => 'v1.2.2', 'version' => '1.2.2.0', 'reference' => '97cbf289f4d8877acfe58dd90ed5a4370a43caa4', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/pipeline', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/process' => array('pretty_version' => 'v2.0.3', 'version' => '2.0.3.0', 'reference' => '52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/process', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/serialization' => array('pretty_version' => 'v1.0.0', 'version' => '1.0.0.0', 'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/serialization', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/socket' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '58e0422221825b79681b72c50c47a930be7bf1e1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/socket', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/sync' => array('pretty_version' => 'v2.3.0', 'version' => '2.3.0.0', 'reference' => '217097b785130d77cfcc58ff583cf26cd1770bf1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/sync', 'aliases' => array(), 'dev_requirement' => \false), 'daverandom/libdns' => array('pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'reference' => 'b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a', 'type' => 'library', 'install_path' => __DIR__ . '/../daverandom/libdns', 'aliases' => array(), 'dev_requirement' => \false), 'gdata/vaas' => array('pretty_version' => '11.0.1', 'version' => '11.0.1.0', 'reference' => '32d6c8818479af4b93385277c78bda1262e6c18b', 'type' => 'library', 'install_path' => __DIR__ . '/../gdata/vaas', 'aliases' => array(), 'dev_requirement' => \false), 'gdatacyberdefenseag/gdata-antivirus' => array('pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v11.44.0', 'version' => '11.44.0.0', 'reference' => '4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v11.44.0', 'version' => '11.44.0.0', 'reference' => 'b350a3cd8450846325cb49e1cbc1293598b18898', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'kelunik/certificate' => array('pretty_version' => 'v1.1.3', 'version' => '1.1.3.0', 'reference' => '7e00d498c264d5eb4f78c69f41c8bd6719c0199e', 'type' => 'library', 'install_path' => __DIR__ . '/../kelunik/certificate', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '81fb5145d2644324614cc532b28efd0215bda430', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-components' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-components', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-interfaces' => array('pretty_version' => '7.5.0', 'version' => '7.5.0.0', 'reference' => '08cfc6c4f3d811584fb09c37e2849e6a7f9b0742', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-interfaces', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/http-factory' => array('pretty_version' => '1.1.0', 'version' => '1.1.0.0', 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), 'dev_requirement' => \false), 'psr/http-message' => array('pretty_version' => '2.0', 'version' => '2.0.0.0', 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'revolt/event-loop' => array('pretty_version' => 'v1.0.7', 'version' => '1.0.7.0', 'reference' => '09bf1bf7f7f574453efe43044b06fafe12216eb3', 'type' => 'library', 'install_path' => __DIR__ . '/../revolt/event-loop', 'aliases' => array(), 'dev_requirement' => \false)));
     5return array('root' => array('name' => 'gdatacyberdefenseag/gdata-antivirus', 'pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('amphp/amp' => array('pretty_version' => 'v3.1.0', 'version' => '3.1.0.0', 'reference' => '7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/amp', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/byte-stream' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '55a6bd071aec26fa2a3e002618c20c35e3df1b46', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/byte-stream', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/cache' => array('pretty_version' => 'v2.0.1', 'version' => '2.0.1.0', 'reference' => '46912e387e6aa94933b61ea1ead9cf7540b7797c', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/cache', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/dns' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => '78eb3db5fc69bf2fc0cb503c4fcba667bc223c71', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/dns', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/file' => array('pretty_version' => 'v3.2.0', 'version' => '3.2.0.0', 'reference' => '28b38a805d2c235bb581d24415e78a42cd03aedc', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/file', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/hpack' => array('pretty_version' => 'v3.2.1', 'version' => '3.2.1.0', 'reference' => '4f293064b15682a2b178b1367ddf0b8b5feb0239', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/hpack', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http' => array('pretty_version' => 'v2.1.2', 'version' => '2.1.2.0', 'reference' => '3680d80bd38b5d6f3c2cef2214ca6dd6cef26588', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/http-client' => array('pretty_version' => 'v5.3.0', 'version' => '5.3.0.0', 'reference' => 'd50928ec41d4ac3bcec5a01fe1caaf7575cbdc75', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/http-client', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parallel' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '5113111de02796a782f5d90767455e7391cca190', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parallel', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/parser' => array('pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', 'reference' => '3cf1f8b32a0171d4b1bed93d25617637a77cded7', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/parser', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/pipeline' => array('pretty_version' => 'v1.2.3', 'version' => '1.2.3.0', 'reference' => '7b52598c2e9105ebcddf247fc523161581930367', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/pipeline', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/process' => array('pretty_version' => 'v2.0.3', 'version' => '2.0.3.0', 'reference' => '52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/process', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/serialization' => array('pretty_version' => 'v1.0.0', 'version' => '1.0.0.0', 'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/serialization', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/socket' => array('pretty_version' => 'v2.3.1', 'version' => '2.3.1.0', 'reference' => '58e0422221825b79681b72c50c47a930be7bf1e1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/socket', 'aliases' => array(), 'dev_requirement' => \false), 'amphp/sync' => array('pretty_version' => 'v2.3.0', 'version' => '2.3.0.0', 'reference' => '217097b785130d77cfcc58ff583cf26cd1770bf1', 'type' => 'library', 'install_path' => __DIR__ . '/../amphp/sync', 'aliases' => array(), 'dev_requirement' => \false), 'daverandom/libdns' => array('pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'reference' => 'b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a', 'type' => 'library', 'install_path' => __DIR__ . '/../daverandom/libdns', 'aliases' => array(), 'dev_requirement' => \false), 'gdata/vaas' => array('pretty_version' => '11.0.1', 'version' => '11.0.1.0', 'reference' => '32d6c8818479af4b93385277c78bda1262e6c18b', 'type' => 'library', 'install_path' => __DIR__ . '/../gdata/vaas', 'aliases' => array(), 'dev_requirement' => \false), 'gdatacyberdefenseag/gdata-antivirus' => array('pretty_version' => '1.2.3', 'version' => '1.2.3.0', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v11.44.2', 'version' => '11.44.2.0', 'reference' => '4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v11.44.2', 'version' => '11.44.2.0', 'reference' => 'b350a3cd8450846325cb49e1cbc1293598b18898', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'kelunik/certificate' => array('pretty_version' => 'v1.1.3', 'version' => '1.1.3.0', 'reference' => '7e00d498c264d5eb4f78c69f41c8bd6719c0199e', 'type' => 'library', 'install_path' => __DIR__ . '/../kelunik/certificate', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '81fb5145d2644324614cc532b28efd0215bda430', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-components' => array('pretty_version' => '7.5.1', 'version' => '7.5.1.0', 'reference' => '4aabf0e2f2f9421ffcacab35be33e4fb5e63c44f', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-components', 'aliases' => array(), 'dev_requirement' => \false), 'league/uri-interfaces' => array('pretty_version' => '7.5.0', 'version' => '7.5.0.0', 'reference' => '08cfc6c4f3d811584fb09c37e2849e6a7f9b0742', 'type' => 'library', 'install_path' => __DIR__ . '/../league/uri-interfaces', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/http-factory' => array('pretty_version' => '1.1.0', 'version' => '1.1.0.0', 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), 'dev_requirement' => \false), 'psr/http-message' => array('pretty_version' => '2.0', 'version' => '2.0.0.0', 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'revolt/event-loop' => array('pretty_version' => 'v1.0.7', 'version' => '1.0.7.0', 'reference' => '09bf1bf7f7f574453efe43044b06fafe12216eb3', 'type' => 'library', 'install_path' => __DIR__ . '/../revolt/event-loop', 'aliases' => array(), 'dev_requirement' => \false)));
Note: See TracChangeset for help on using the changeset viewer.