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,57 +1,4 @@
 [
-    {
-        "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",
@@ -167,54 +114,6 @@
             "web service"
         ]
     },
-    {
-        "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",
@@ -283,66 +182,6 @@
             "schema"
         ]
     },
-    {
-        "name": "guzzlehttp/psr7",
-        "version": "1.2.2",
-        "version_normalized": "1.2.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/psr7.git",
-            "reference": "f5d04bdd2881ac89abde1fb78cc234bce24327bb"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5d04bdd2881ac89abde1fb78cc234bce24327bb",
-            "reference": "f5d04bdd2881ac89abde1fb78cc234bce24327bb",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0",
-            "psr/http-message": "~1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.0"
-        },
-        "time": "2016-01-23 01:23:02",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Psr7\\": "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": "PSR-7 message implementation",
-        "keywords": [
-            "http",
-            "message",
-            "stream",
-            "uri"
-        ]
-    },
     {
         "name": "php-opencloud/common",
         "version": "dev-master",
@@ -389,5 +228,161 @@
                 "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.3",
+        "version_normalized": "1.2.3.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/guzzle/psr7.git",
+            "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/guzzle/psr7/zipball/2e89629ff057ebb49492ba08e6995d3a6a80021b",
+            "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.4.0",
+            "psr/http-message": "~1.0"
+        },
+        "provide": {
+            "psr/http-message-implementation": "1.0"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "~4.0"
+        },
+        "time": "2016-02-18 21:54:00",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.0-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "GuzzleHttp\\Psr7\\": "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": "PSR-7 message implementation",
+        "keywords": [
+            "http",
+            "message",
+            "stream",
+            "uri"
+        ]
+    },
+    {
+        "name": "php-opencloud/openstack",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/php-opencloud/openstack.git",
+            "reference": "f2ee77024843659d970817a9e7055bb40a3724f9"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/php-opencloud/openstack/zipball/f2ee77024843659d970817a9e7055bb40a3724f9",
+            "reference": "f2ee77024843659d970817a9e7055bb40a3724f9",
+            "shasum": ""
+        },
+        "require": {
+            "php-opencloud/common": "dev-master"
+        },
+        "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 14:37:14",
+        "type": "library",
+        "installation-source": "source",
+        "autoload": {
+            "psr-4": {
+                "OpenStack\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "authors": [
+            {
+                "name": "Jamie Hannaford",
+                "email": "jamie.hannaford@rackspace.com",
+                "homepage": "https://github.com/jamiehannaford"
+            }
+        ]
     }
 ]
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
index 15aca73..f2ee770 160000
--- a/server/vendor/php-opencloud/openstack
+++ b/server/vendor/php-opencloud/openstack
@@ -1 +1 @@
-Subproject commit 15aca73f423166c7ef8337ba08615c103c66e931
+Subproject commit f2ee77024843659d970817a9e7055bb40a3724f9