From c237acb3953791f77b52f89efb7229e59606fdc0 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Fri, 7 Nov 2014 22:52:07 -0800
Subject: [PATCH] google: disable compression when curl is not available

This is a slightly hacky workaround for
https://github.com/google/google-api-php-client/issues/59 .
There's a bug in the Google library which makes it go nuts on
file uploads and transfer *way* too much data if compression is
enabled and it's using its own IO handler (not curl). Upstream
'fixed' this (by disabling compression) for one upload
mechanism, but not for the one we use. The bug doesn't seem to
happen if the google lib detects that curl is available and
decides to use it instead of its own handler. So, let's disable
compression, but only if it looks like the Google lib's check
for curl is going to fail.
---
 apps/files_external/lib/google.php | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index 76ad1e4b0f..27885f356c 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -52,6 +52,12 @@ class Google extends \OC\Files\Storage\Common {
 			$this->client->setClientSecret($params['client_secret']);
 			$this->client->setScopes(array('https://www.googleapis.com/auth/drive'));
 			$this->client->setAccessToken($params['token']);
+			// if curl isn't available we're likely to run into
+			// https://github.com/google/google-api-php-client/issues/59
+			// - disable gzip to avoid it.
+			if (!function_exists('curl_version') || !function_exists('curl_exec')) {
+				$this->client->setClassConfig("Google_Http_Request", "disable_gzip", true);
+			}
 			// note: API connection is lazy
 			$this->service = new \Google_Service_Drive($this->client);
 			$token = json_decode($params['token'], true);
-- 
GitLab