diff --git a/app/Model/Server.php b/app/Model/Server.php index 16f7ca679..7d1cf8c0a 100644 --- a/app/Model/Server.php +++ b/app/Model/Server.php @@ -4466,19 +4466,28 @@ class Server extends AppModel public function queryAvailableSyncFilteringRules($server) { + $syncFilteringRules = [ + 'error' => '', + 'data' => [] + ]; $HttpSocket = $this->setupHttpSocket($server, null); $uri = $server['Server']['url'] . '/servers/getAvailableSyncFilteringRules'; $request = $this->setupSyncRequest($server); - $response = $HttpSocket->get($uri, false, $request); - if ($response === false) { - throw new Exception(__('Connection failed for unknown reason.')); + try { + $response = $HttpSocket->get($uri, false, $request); + if ($response === false) { + $syncFilteringRules['error'] = __('Connection failed for unknown reason.'); + return $syncFilteringRules; + } + } catch (SocketException $e) { + $syncFilteringRules['error'] = __('Connection failed for unknown reason. Error returned: %s', $e->getMessage()); + return $syncFilteringRules; } - $syncFilteringRules = []; if ($response->isOk()) { - $syncFilteringRules = $this->jsonDecode($response->body()); + $syncFilteringRules['data'] = $this->jsonDecode($response->body()); } else { - throw new Exception(__('Reponse was not OK. (HTTP code: %s)', $response->code)); + $syncFilteringRules['error'] = __('Reponse was not OK. (HTTP code: %s)', $response->code); } return $syncFilteringRules; } diff --git a/app/View/Elements/serverRuleElements/pull.ctp b/app/View/Elements/serverRuleElements/pull.ctp index 2486fb30d..23dec117e 100755 --- a/app/View/Elements/serverRuleElements/pull.ctp +++ b/app/View/Elements/serverRuleElements/pull.ctp @@ -118,7 +118,6 @@ $(function() { $('div.notice-pull-rule-fetched.alert-success').show() }, function(errorMessage) { - showMessage('fail', ''); var regex = /Reponse was not OK\. \(HTTP code: (?\d+)\)/m var matches = errorMessage.match(regex) if (matches !== null) { @@ -150,10 +149,11 @@ $(function() { function getPullFilteringRules(callback, failCallback, alwaysCallback) { $.getJSON('/servers/queryAvailableSyncFilteringRules/' + serverID, function(availableRules) { - callback(availableRules) - }) - .fail(function(jqxhr, textStatus, error) { - failCallback(jqxhr.responseJSON.message !== undefined ? jqxhr.responseJSON.message : textStatus) + if (availableRules.error.length == 0) { + callback(availableRules.data) + } else { + failCallback(availableRules.error) + } }) .always(function() { alwaysCallback()