summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEoleDev <root@serverpc.home>2016-03-09 16:03:46 +0100
committerEoleDev <root@serverpc.home>2016-03-09 16:03:46 +0100
commit03ef74d0cfe675a6e18a91f039182ca1b248d8f5 (patch)
treeb1668c59fdbf9cb0b0a3da52bfc79e393a953573
parent1d3ed3af6d57316640c143002ddf80d61e6c098a (diff)
MAJ Librarys
-rw-r--r--server/vendor/composer/autoload_psr4.php2
-rw-r--r--server/vendor/composer/installed.json233
-rw-r--r--server/vendor/guzzlehttp/promises/CHANGELOG.md6
-rw-r--r--server/vendor/guzzlehttp/promises/src/EachPromise.php20
-rw-r--r--server/vendor/guzzlehttp/promises/src/Promise.php27
-rw-r--r--server/vendor/guzzlehttp/promises/src/TaskQueue.php1
-rw-r--r--server/vendor/guzzlehttp/promises/src/functions.php8
-rw-r--r--server/vendor/guzzlehttp/promises/tests/EachPromiseTest.php48
-rw-r--r--server/vendor/guzzlehttp/promises/tests/PromiseTest.php12
-rw-r--r--server/vendor/guzzlehttp/psr7/CHANGELOG.md6
-rw-r--r--server/vendor/guzzlehttp/psr7/README.md4
-rw-r--r--server/vendor/guzzlehttp/psr7/src/CachingStream.php9
-rw-r--r--server/vendor/guzzlehttp/psr7/src/InflateStream.php27
-rw-r--r--server/vendor/guzzlehttp/psr7/tests/CachingStreamTest.php27
-rw-r--r--server/vendor/guzzlehttp/psr7/tests/InflateStreamTest.php23
-rw-r--r--server/vendor/guzzlehttp/psr7/tests/UriTest.php2
m---------server/vendor/php-opencloud/openstack0
17 files changed, 304 insertions, 151 deletions
diff --git a/server/vendor/composer/autoload_psr4.php b/server/vendor/composer/autoload_psr4.php
index 077c577..0b3ff02 100644
--- a/server/vendor/composer/autoload_psr4.php
+++ b/server/vendor/composer/autoload_psr4.php
@@ -7,8 +7,6 @@ $baseDir = dirname($vendorDir);
return array(
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
- 'OpenStack\\Test\\' => array($vendorDir . '/php-opencloud/openstack/tests/unit'),
- 'OpenStack\\Integration\\' => array($vendorDir . '/php-opencloud/openstack/tests/integration'),
'OpenStack\\' => array($vendorDir . '/php-opencloud/openstack/src'),
'OpenCloud\\Test\\' => array($vendorDir . '/php-opencloud/common/tests/unit'),
'OpenCloud\\Integration\\' => array($vendorDir . '/php-opencloud/common/tests/integration'),
diff --git a/server/vendor/composer/installed.json b/server/vendor/composer/installed.json
index 70c1b5b..8f06408 100644
--- a/server/vendor/composer/installed.json
+++ b/server/vendor/composer/installed.json
@@ -1,58 +1,5 @@
[
{
- "name": "guzzlehttp/promises",
- "version": "1.0.3",
- "version_normalized": "1.0.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "time": "2015-10-15 22:28:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ]
- },
- {
"name": "psr/http-message",
"version": "1.0",
"version_normalized": "1.0.0.0",
@@ -168,54 +115,6 @@
]
},
{
- "name": "php-opencloud/openstack",
- "version": "dev-master",
- "version_normalized": "9999999-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/php-opencloud/openstack.git",
- "reference": "15aca73f423166c7ef8337ba08615c103c66e931"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-opencloud/openstack/zipball/f2ee77024843659d970817a9e7055bb40a3724f9",
- "reference": "15aca73f423166c7ef8337ba08615c103c66e931",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~6.1",
- "justinrainbow/json-schema": "~1.3",
- "php": ">=5.6"
- },
- "require-dev": {
- "fabpot/php-cs-fixer": "~1.0",
- "jakub-onderka/php-parallel-lint": "0.*",
- "phpspec/prophecy-phpunit": "~1.0",
- "phpunit/phpunit": "~4.0",
- "psr/log": "~1.0",
- "sami/sami": "dev-master",
- "satooshi/php-coveralls": "~1.0"
- },
- "time": "2016-01-25 10:35:10",
- "type": "library",
- "installation-source": "source",
- "autoload": {
- "psr-4": {
- "OpenStack\\": "src/",
- "OpenStack\\Test\\": "tests/unit/",
- "OpenStack\\Integration\\": "tests/integration/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "authors": [
- {
- "name": "Jamie Hannaford",
- "email": "jamie.hannaford@rackspace.com",
- "homepage": "https://github.com/jamiehannaford"
- }
- ]
- },
- {
"name": "justinrainbow/json-schema",
"version": "1.6.1",
"version_normalized": "1.6.1.0",
@@ -284,18 +183,118 @@
]
},
{
+ "name": "php-opencloud/common",
+ "version": "dev-master",
+ "version_normalized": "9999999-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-opencloud/common.git",
+ "reference": "fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-opencloud/common/zipball/fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62",
+ "reference": "fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "~6.1",
+ "justinrainbow/json-schema": "~1.3",
+ "php": "~7.0"
+ },
+ "require-dev": {
+ "fabpot/php-cs-fixer": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.*",
+ "phpunit/phpunit": "~4.0",
+ "psr/log": "~1.0",
+ "sami/sami": "dev-master",
+ "satooshi/php-coveralls": "~1.0"
+ },
+ "time": "2016-03-08 12:56:34",
+ "type": "library",
+ "installation-source": "source",
+ "autoload": {
+ "psr-4": {
+ "OpenCloud\\": "src/",
+ "OpenCloud\\Test\\": "tests/unit/",
+ "OpenCloud\\Integration\\": "tests/integration/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "authors": [
+ {
+ "name": "Jamie Hannaford",
+ "email": "jamie.hannaford@rackspace.com",
+ "homepage": "https://github.com/jamiehannaford"
+ }
+ ]
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "1.1.0",
+ "version_normalized": "1.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/bb9024c526b22f3fe6ae55a561fd70653d470aa8",
+ "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "time": "2016-03-08 01:15:46",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ]
+ },
+ {
"name": "guzzlehttp/psr7",
- "version": "1.2.2",
- "version_normalized": "1.2.2.0",
+ "version": "1.2.3",
+ "version_normalized": "1.2.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "f5d04bdd2881ac89abde1fb78cc234bce24327bb"
+ "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5d04bdd2881ac89abde1fb78cc234bce24327bb",
- "reference": "f5d04bdd2881ac89abde1fb78cc234bce24327bb",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/2e89629ff057ebb49492ba08e6995d3a6a80021b",
+ "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b",
"shasum": ""
},
"require": {
@@ -308,7 +307,7 @@
"require-dev": {
"phpunit/phpunit": "~4.0"
},
- "time": "2016-01-23 01:23:02",
+ "time": "2016-02-18 21:54:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -344,24 +343,22 @@
]
},
{
- "name": "php-opencloud/common",
+ "name": "php-opencloud/openstack",
"version": "dev-master",
"version_normalized": "9999999-dev",
"source": {
"type": "git",
- "url": "https://github.com/php-opencloud/common.git",
- "reference": "fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62"
+ "url": "https://github.com/php-opencloud/openstack.git",
+ "reference": "f2ee77024843659d970817a9e7055bb40a3724f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-opencloud/common/zipball/fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62",
- "reference": "fd027b817c3dd8f83b0c8d9fb1df34ebf25f8c62",
+ "url": "https://api.github.com/repos/php-opencloud/openstack/zipball/f2ee77024843659d970817a9e7055bb40a3724f9",
+ "reference": "f2ee77024843659d970817a9e7055bb40a3724f9",
"shasum": ""
},
"require": {
- "guzzlehttp/guzzle": "~6.1",
- "justinrainbow/json-schema": "~1.3",
- "php": "~7.0"
+ "php-opencloud/common": "dev-master"
},
"require-dev": {
"fabpot/php-cs-fixer": "~1.0",
@@ -371,14 +368,12 @@
"sami/sami": "dev-master",
"satooshi/php-coveralls": "~1.0"
},
- "time": "2016-03-08 12:56:34",
+ "time": "2016-03-08 14:37:14",
"type": "library",
"installation-source": "source",
"autoload": {
"psr-4": {
- "OpenCloud\\": "src/",
- "OpenCloud\\Test\\": "tests/unit/",
- "OpenCloud\\Integration\\": "tests/integration/"
+ "OpenStack\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
diff --git a/server/vendor/guzzlehttp/promises/CHANGELOG.md b/server/vendor/guzzlehttp/promises/CHANGELOG.md
index 4031cb8..3871ac7 100644
--- a/server/vendor/guzzlehttp/promises/CHANGELOG.md
+++ b/server/vendor/guzzlehttp/promises/CHANGELOG.md
@@ -1,5 +1,11 @@
# CHANGELOG
+## 1.1.0 - 2016-03-07
+
+* Update EachPromise to prevent recurring on a iterator when advancing, as this
+ could trigger fatal generator errors.
+* Update Promise to allow recursive waiting without unwrapping exceptions.
+
## 1.0.3 - 2015-10-15
* Update EachPromise to immediately resolve when the underlying promise iterator
diff --git a/server/vendor/guzzlehttp/promises/src/EachPromise.php b/server/vendor/guzzlehttp/promises/src/EachPromise.php
index 5918429..0344686 100644
--- a/server/vendor/guzzlehttp/promises/src/EachPromise.php
+++ b/server/vendor/guzzlehttp/promises/src/EachPromise.php
@@ -24,6 +24,9 @@ class EachPromise implements PromisorInterface
/** @var Promise */
private $aggregate;
+ /** @var bool */
+ private $mutex;
+
/**
* Configuration hash can include the following key value pairs:
*
@@ -81,6 +84,7 @@ class EachPromise implements PromisorInterface
private function createPromise()
{
+ $this->mutex = false;
$this->aggregate = new Promise(function () {
reset($this->pending);
if (empty($this->pending) && !$this->iterable->valid()) {
@@ -169,11 +173,21 @@ class EachPromise implements PromisorInterface
private function advanceIterator()
{
+ // Place a lock on the iterator so that we ensure to not recurse,
+ // preventing fatal generator errors.
+ if ($this->mutex) {
+ return false;
+ }
+
+ $this->mutex = true;
+
try {
$this->iterable->next();
+ $this->mutex = false;
return true;
} catch (\Exception $e) {
$this->aggregate->reject($e);
+ $this->mutex = false;
return false;
}
}
@@ -186,9 +200,11 @@ class EachPromise implements PromisorInterface
}
unset($this->pending[$idx]);
- $this->advanceIterator();
- if (!$this->checkIfFinished()) {
+ // Only refill pending promises if we are not locked, preventing the
+ // EachPromise to recursively invoke the provided iterator, which
+ // cause a fatal error: "Cannot resume an already running generator"
+ if ($this->advanceIterator() && !$this->checkIfFinished()) {
// Add more pending promises if possible.
$this->refillPending();
}
diff --git a/server/vendor/guzzlehttp/promises/src/Promise.php b/server/vendor/guzzlehttp/promises/src/Promise.php
index c2cf969..86820b2 100644
--- a/server/vendor/guzzlehttp/promises/src/Promise.php
+++ b/server/vendor/guzzlehttp/promises/src/Promise.php
@@ -61,17 +61,19 @@ class Promise implements PromiseInterface
{
$this->waitIfPending();
- if (!$unwrap) {
- return null;
- }
+ $inner = $this->result instanceof PromiseInterface
+ ? $this->result->wait($unwrap)
+ : $this->result;
- if ($this->result instanceof PromiseInterface) {
- return $this->result->wait($unwrap);
- } elseif ($this->state === self::FULFILLED) {
- return $this->result;
- } else {
- // It's rejected so "unwrap" and throw an exception.
- throw exception_for($this->result);
+ if ($unwrap) {
+ if ($this->result instanceof PromiseInterface
+ || $this->state === self::FULFILLED
+ ) {
+ return $inner;
+ } else {
+ // It's rejected so "unwrap" and throw an exception.
+ throw exception_for($inner);
+ }
}
}
@@ -257,11 +259,10 @@ class Promise implements PromiseInterface
$this->waitList = null;
foreach ($waitList as $result) {
- descend:
$result->waitIfPending();
- if ($result->result instanceof Promise) {
+ while ($result->result instanceof Promise) {
$result = $result->result;
- goto descend;
+ $result->waitIfPending();
}
}
}
diff --git a/server/vendor/guzzlehttp/promises/src/TaskQueue.php b/server/vendor/guzzlehttp/promises/src/TaskQueue.php
index 5026363..39fe5bb 100644
--- a/server/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ b/server/vendor/guzzlehttp/promises/src/TaskQueue.php
@@ -56,6 +56,7 @@ class TaskQueue
*/
public function run()
{
+ /** @var callable $task */
while ($task = array_shift($this->queue)) {
$task();
}
diff --git a/server/vendor/guzzlehttp/promises/src/functions.php b/server/vendor/guzzlehttp/promises/src/functions.php
index 89c6569..2fe61b7 100644
--- a/server/vendor/guzzlehttp/promises/src/functions.php
+++ b/server/vendor/guzzlehttp/promises/src/functions.php
@@ -146,9 +146,9 @@ function inspect(PromiseInterface $promise)
'value' => $promise->wait()
];
} catch (RejectionException $e) {
- return ['state' => 'rejected', 'reason' => $e->getReason()];
+ return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
} catch (\Exception $e) {
- return ['state' => 'rejected', 'reason' => $e];
+ return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
}
}
@@ -304,10 +304,10 @@ function settle($promises)
return each(
$promises,
function ($value, $idx) use (&$results) {
- $results[$idx] = ['state' => 'fulfilled', 'value' => $value];
+ $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
},
function ($reason, $idx) use (&$results) {
- $results[$idx] = ['state' => 'rejected', 'reason' => $reason];
+ $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
}
)->then(function () use (&$results) {
ksort($results);
diff --git a/server/vendor/guzzlehttp/promises/tests/EachPromiseTest.php b/server/vendor/guzzlehttp/promises/tests/EachPromiseTest.php
index 0a0a851..08af2a0 100644
--- a/server/vendor/guzzlehttp/promises/tests/EachPromiseTest.php
+++ b/server/vendor/guzzlehttp/promises/tests/EachPromiseTest.php
@@ -39,8 +39,8 @@ class EachPromiseTest extends \PHPUnit_Framework_TestCase
public function testIsWaitable()
{
- $a = new Promise(function () use (&$a) { $a->resolve('a'); });
- $b = new Promise(function () use (&$b) { $b->resolve('b'); });
+ $a = $this->createSelfResolvingPromise('a');
+ $b = $this->createSelfResolvingPromise('b');
$called = [];
$each = new EachPromise([$a, $b], [
'fulfilled' => function ($value) use (&$called) { $called[] = $value; }
@@ -54,7 +54,7 @@ class EachPromiseTest extends \PHPUnit_Framework_TestCase
public function testCanResolveBeforeConsumingAll()
{
$called = 0;
- $a = new Promise(function () use (&$a) { $a->resolve('a'); });
+ $a = $this->createSelfResolvingPromise('a');
$b = new Promise(function () { $this->fail(); });
$each = new EachPromise([$a, $b], [
'fulfilled' => function ($value, $idx, Promise $aggregate) use (&$called) {
@@ -291,4 +291,46 @@ class EachPromiseTest extends \PHPUnit_Framework_TestCase
}
$this->assertEquals(range(0, 9), $results);
}
+
+ private function createSelfResolvingPromise($value)
+ {
+ $p = new Promise(function () use (&$p, $value) {
+ $p->resolve($value);
+ });
+
+ return $p;
+ }
+
+ public function testMutexPreventsGeneratorRecursion()
+ {
+ $results = $promises = [];
+ for ($i = 0; $i < 20; $i++) {
+ $p = $this->createSelfResolvingPromise($i);
+ $pending[] = $p;
+ $promises[] = $p;
+ }
+
+ $iter = function () use (&$promises, &$pending) {
+ foreach ($promises as $promise) {
+ // Resolve a promises, which will trigger the then() function,
+ // which would cause the EachPromise to try to add more
+ // promises to the queue. Without a lock, this would trigger
+ // a "Cannot resume an already running generator" fatal error.
+ if ($p = array_pop($pending)) {
+ $p->wait();
+ }
+ yield $promise;
+ }
+ };
+
+ $each = new EachPromise($iter(), [
+ 'concurrency' => 5,
+ 'fulfilled' => function ($r) use (&$results, &$pending) {
+ $results[] = $r;
+ }
+ ]);
+
+ $each->promise()->wait();
+ $this->assertCount(20, $results);
+ }
}
diff --git a/server/vendor/guzzlehttp/promises/tests/PromiseTest.php b/server/vendor/guzzlehttp/promises/tests/PromiseTest.php
index 946c627..599d8ae 100644
--- a/server/vendor/guzzlehttp/promises/tests/PromiseTest.php
+++ b/server/vendor/guzzlehttp/promises/tests/PromiseTest.php
@@ -172,6 +172,18 @@ class PromiseTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('Whoop', $p->wait());
}
+ public function testWaitsOnAPromiseChainEvenWhenNotUnwrapped()
+ {
+ $p2 = new Promise(function () use (&$p2) {
+ $p2->reject('Fail');
+ });
+ $p = new Promise(function () use ($p2, &$p) {
+ $p->resolve($p2);
+ });
+ $p->wait(false);
+ $this->assertSame(Promise::REJECTED, $p2->getState());
+ }
+
public function testCannotCancelNonPending()
{
$p = new Promise();
diff --git a/server/vendor/guzzlehttp/psr7/CHANGELOG.md b/server/vendor/guzzlehttp/psr7/CHANGELOG.md
index d875aa3..0e278bd 100644
--- a/server/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ b/server/vendor/guzzlehttp/psr7/CHANGELOG.md
@@ -1,5 +1,11 @@
# CHANGELOG
+## 1.2.3 - 2016-02-18
+
+* Fixed support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote
+ streams, which can sometimes return fewer bytes than requested with `fread`.
+* Fixed handling of gzipped responses with FNAME headers.
+
## 1.2.2 - 2016-01-22
* Added support for URIs without any authority.
diff --git a/server/vendor/guzzlehttp/psr7/README.md b/server/vendor/guzzlehttp/psr7/README.md
index 0a4c341..c15ddd3 100644
--- a/server/vendor/guzzlehttp/psr7/README.md
+++ b/server/vendor/guzzlehttp/psr7/README.md
@@ -38,7 +38,7 @@ echo $composed(); // abc, 123. Above all listen to me.
`GuzzleHttp\Psr7\BufferStream`
-Provides a buffer stream that can be written to to fill a buffer, and read
+Provides a buffer stream that can be written to fill a buffer, and read
from to remove bytes from the buffer.
This stream returns a "hwm" metadata value that tells upstream consumers
@@ -106,7 +106,7 @@ echo $stream; // 0123456789
Compose stream implementations based on a hash of functions.
-Allows for easy testing and extension of a provided stream without needing to
+Allows for easy testing and extension of a provided stream without needing
to create a concrete class for a simple extension point.
```php
diff --git a/server/vendor/guzzlehttp/psr7/src/CachingStream.php b/server/vendor/guzzlehttp/psr7/src/CachingStream.php
index 420d5b0..ed68f08 100644
--- a/server/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ b/server/vendor/guzzlehttp/psr7/src/CachingStream.php
@@ -60,9 +60,12 @@ class CachingStream implements StreamInterface
$diff = $byte - $this->stream->getSize();
if ($diff > 0) {
- // If the seek byte is greater the number of read bytes, then read
- // the difference of bytes to cache the bytes and inherently seek.
- $this->read($diff);
+ // Read the remoteStream until we have read in at least the amount
+ // of bytes requested, or we reach the end of the file.
+ while ($diff > 0 && !$this->remoteStream->eof()) {
+ $this->read($diff);
+ $diff = $byte - $this->stream->getSize();
+ }
} else {
// We can just do a normal seek since we've already seen this byte.
$this->stream->seek($byte);
diff --git a/server/vendor/guzzlehttp/psr7/src/InflateStream.php b/server/vendor/guzzlehttp/psr7/src/InflateStream.php
index 2c8628b..0051d3f 100644
--- a/server/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ b/server/vendor/guzzlehttp/psr7/src/InflateStream.php
@@ -20,10 +20,33 @@ class InflateStream implements StreamInterface
public function __construct(StreamInterface $stream)
{
- // Skip the first 10 bytes
- $stream = new LimitStream($stream, -1, 10);
+ // read the first 10 bytes, ie. gzip header
+ $header = $stream->read(10);
+ $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
+ // Skip the header, that is 10 + length of filename + 1 (nil) bytes
+ $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength);
$resource = StreamWrapper::getResource($stream);
stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
$this->stream = new Stream($resource);
}
+
+ /**
+ * @param StreamInterface $stream
+ * @param $header
+ * @return int
+ */
+ private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)
+ {
+ $filename_header_length = 0;
+
+ if (substr(bin2hex($header), 6, 2) === '08') {
+ // we have a filename, read until nil
+ $filename_header_length = 1;
+ while ($stream->read(1) !== chr(0)) {
+ $filename_header_length++;
+ }
+ }
+
+ return $filename_header_length;
+ }
}
diff --git a/server/vendor/guzzlehttp/psr7/tests/CachingStreamTest.php b/server/vendor/guzzlehttp/psr7/tests/CachingStreamTest.php
index 326f754..60a2636 100644
--- a/server/vendor/guzzlehttp/psr7/tests/CachingStreamTest.php
+++ b/server/vendor/guzzlehttp/psr7/tests/CachingStreamTest.php
@@ -98,6 +98,33 @@ class CachingStreamTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('ing', $this->body->read(3));
}
+ public function testCanSeekToReadBytesWithPartialBodyReturned()
+ {
+ $stream = fopen('php://temp', 'r+');
+ fwrite($stream, 'testing');
+ fseek($stream, 0);
+
+ $this->decorated = $this->getMockBuilder('\GuzzleHttp\Psr7\Stream')
+ ->setConstructorArgs([$stream])
+ ->setMethods(['read'])
+ ->getMock();
+
+ $this->decorated->expects($this->exactly(2))
+ ->method('read')
+ ->willReturnCallback(function($length) use ($stream){
+ return fread($stream, 2);
+ });
+
+ $this->body = new CachingStream($this->decorated);
+
+ $this->assertEquals(0, $this->body->tell());
+ $this->body->seek(4, SEEK_SET);
+ $this->assertEquals(4, $this->body->tell());
+
+ $this->body->seek(0);
+ $this->assertEquals('test', $this->body->read(4));
+ }
+
public function testWritesToBufferStream()
{
$this->body->read(2);
diff --git a/server/vendor/guzzlehttp/psr7/tests/InflateStreamTest.php b/server/vendor/guzzlehttp/psr7/tests/InflateStreamTest.php
index 927fc0b..0e4b586 100644
--- a/server/vendor/guzzlehttp/psr7/tests/InflateStreamTest.php
+++ b/server/vendor/guzzlehttp/psr7/tests/InflateStreamTest.php
@@ -13,4 +13,27 @@ class InflateStreamtest extends \PHPUnit_Framework_TestCase
$b = new InflateStream($a);
$this->assertEquals('test', (string) $b);
}
+
+ public function testInflatesStreamsWithFilename()
+ {
+ $content = $this->getGzipStringWithFilename('test');
+ $a = Psr7\stream_for($content);
+ $b = new InflateStream($a);
+ $this->assertEquals('test', (string) $b);
+ }
+
+ private function getGzipStringWithFilename($original_string)
+ {
+ $gzipped = bin2hex(gzencode($original_string));
+
+ $header = substr($gzipped, 0, 20);
+ // set FNAME flag
+ $header[6]=0;
+ $header[7]=8;
+ // make a dummy filename
+ $filename = "64756d6d7900";
+ $rest = substr($gzipped, 20);
+
+ return hex2bin($header . $filename . $rest);
+ }
}
diff --git a/server/vendor/guzzlehttp/psr7/tests/UriTest.php b/server/vendor/guzzlehttp/psr7/tests/UriTest.php
index a63293c..357ee25 100644
--- a/server/vendor/guzzlehttp/psr7/tests/UriTest.php
+++ b/server/vendor/guzzlehttp/psr7/tests/UriTest.php
@@ -154,7 +154,7 @@ class UriTest extends \PHPUnit_Framework_TestCase
[self::RFC3986_BASE, 'g;x=1/../y', 'http://a/b/c/y'],
['http://u@a/b/c/d;p?q', '.', 'http://u@a/b/c/'],
['http://u:p@a/b/c/d;p?q', '.', 'http://u:p@a/b/c/'],
- //[self::RFC3986_BASE, 'http:g', 'http:g'],
+ ['http://a/b/c/d/', 'e', 'http://a/b/c/d/e'],
];
}
diff --git a/server/vendor/php-opencloud/openstack b/server/vendor/php-opencloud/openstack
-Subproject 15aca73f423166c7ef8337ba08615c103c66e93
+Subproject f2ee77024843659d970817a9e7055bb40a3724f