Add timeouts to make the UI usable again when a remote share is unreachable

This commit is contained in:
Joas Schilling 2016-06-15 16:30:24 +02:00 committed by Vincent Petry
parent b85bcccc09
commit 3e763ac81e
No known key found for this signature in database
GPG Key ID: AF8F9EFC56562186
4 changed files with 20 additions and 5 deletions

View File

@ -84,7 +84,10 @@ class DiscoveryManager {
// Read the data from the response body
try {
$response = $this->client->get($remote . '/ocs-provider/');
$response = $this->client->get($remote . '/ocs-provider/', [
'timeout' => 3,
'connect_timeout' => 3,
]);
if($response->getStatusCode() === 200) {
$decodedService = json_decode($response->getBody(), true);
if(is_array($decodedService)) {

View File

@ -287,7 +287,9 @@ class Notifications {
$endpoint = $this->discoveryManager->getShareEndpoint($protocol . $remoteDomain);
try {
$response = $client->post($protocol . $remoteDomain . $endpoint . $urlSuffix . '?format=' . self::RESPONSE_FORMAT, [
'body' => $fields
'body' => $fields,
'timeout' => 3,
'connect_timeout' => 3,
]);
$result['result'] = $response->getBody();
$result['success'] = true;

View File

@ -77,7 +77,10 @@ $externalManager = new \OCA\Files_Sharing\External\Manager(
// check for ssl cert
if (substr($remote, 0, 5) === 'https') {
try {
\OC::$server->getHTTPClientService()->newClient()->get($remote)->getBody();
\OC::$server->getHTTPClientService()->newClient()->get($remote, [
'timeout' => 3,
'connect_timeout' => 3,
])->getBody();
} catch (\Exception $e) {
\OCP\JSON::error(array('data' => array('message' => $l->t('Invalid or untrusted SSL certificate'))));
exit;

View File

@ -254,7 +254,10 @@ class Storage extends DAV implements ISharedStorage {
$client = $this->httpClient->newClient();
try {
$result = $client->get($url)->getBody();
$result = $client->get($url, [
'timeout' => 3,
'connect_timeout' => 3,
])->getBody();
$data = json_decode($result);
$returnValue = (is_object($data) && !empty($data->version));
} catch (ConnectException $e) {
@ -301,7 +304,11 @@ class Storage extends DAV implements ISharedStorage {
// TODO: DI
$client = \OC::$server->getHTTPClientService()->newClient();
try {
$response = $client->post($url, ['body' => ['password' => $password]]);
$response = $client->post($url, [
'body' => ['password' => $password],
'timeout' => 3,
'connect_timeout' => 3,
]);
} catch (\GuzzleHttp\Exception\RequestException $e) {
if ($e->getCode() === 401 || $e->getCode() === 403) {
throw new ForbiddenException();