Don't trust response header (fixes #2186)

Either Angular or the browser sometimes returns cached repsonse header,
causing a flap between requests that return the new version and requests
that return the old one. Here, instead, we trust the actual data
returned by the uncached /rest/system/version call.
This commit is contained in:
Jakob Borg 2015-08-25 15:38:28 +02:00
parent feffc0416f
commit ace8451604
3 changed files with 9 additions and 12 deletions

View File

@ -24,7 +24,6 @@ var urlbase = 'rest';
syncthing.config(function ($httpProvider, $translateProvider, LocaleServiceProvider) { syncthing.config(function ($httpProvider, $translateProvider, LocaleServiceProvider) {
$httpProvider.interceptors.push(function xHeadersResponseInterceptor() { $httpProvider.interceptors.push(function xHeadersResponseInterceptor() {
var guiVersion = null;
var deviceId = null; var deviceId = null;
return { return {
@ -38,14 +37,6 @@ syncthing.config(function ($httpProvider, $translateProvider, LocaleServiceProvi
return response; return response;
} }
responseVersion = headers['x-syncthing-version'];
if (!guiVersion) {
guiVersion = responseVersion;
} else if (guiVersion != responseVersion) {
document.location.reload(true);
}
if (!deviceId) { if (!deviceId) {
deviceId = headers['x-syncthing-id']; deviceId = headers['x-syncthing-id'];
if (deviceId) { if (deviceId) {

View File

@ -89,6 +89,12 @@ angular.module('syncthing.core')
refreshFolderStats(); refreshFolderStats();
$http.get(urlbase + '/system/version').success(function (data) { $http.get(urlbase + '/system/version').success(function (data) {
if ($scope.version.version && $scope.version.version != data.version) {
// We already have a version response, but it differs from
// the new one. Reload the full GUI in case it's changed.
document.location.reload(true);
}
$scope.version = data; $scope.version = data;
}).error($scope.emitHTTPError); }).error($scope.emitHTTPError);

File diff suppressed because one or more lines are too long