diff --git a/ts/services/storage.ts b/ts/services/storage.ts index c5c152315667..a88348ac539d 100644 --- a/ts/services/storage.ts +++ b/ts/services/storage.ts @@ -682,6 +682,11 @@ async function fetchManifest( return; } } catch (err) { + if (err.code === 204) { + log.info('storageService.fetchManifest: no newer manifest, ok'); + return; + } + log.error( 'storageService.fetchManifest: failed!', err && err.stack ? err.stack : String(err) @@ -691,10 +696,6 @@ async function fetchManifest( await createNewManifest(); return; } - if (err.code === 204) { - // noNewerManifest we're ok - return; - } throw err; } diff --git a/ts/services/storageRecordOps.ts b/ts/services/storageRecordOps.ts index 8b3042632c9e..163b9cb68c6e 100644 --- a/ts/services/storageRecordOps.ts +++ b/ts/services/storageRecordOps.ts @@ -423,7 +423,12 @@ function doRecordsConflict( // If both types are Long we can use Long's equals to compare them if (Long.isLong(localValue) || typeof localValue === 'number') { - if (!Long.isLong(remoteValue) || typeof remoteValue !== 'number') { + if (!Long.isLong(remoteValue) && typeof remoteValue !== 'number') { + log.info( + 'storageService.doRecordsConflict: Conflict found, remote value ' + + 'is not a number', + key + ); return true; } diff --git a/ts/textsecure/WebAPI.ts b/ts/textsecure/WebAPI.ts index b4a1057215f7..bef2690b5dc0 100644 --- a/ts/textsecure/WebAPI.ts +++ b/ts/textsecure/WebAPI.ts @@ -1381,17 +1381,29 @@ export function initialize({ ): Promise { const { credentials, greaterThanVersion } = options; - return _ajax({ + const { data, response } = await _ajax({ call: 'storageManifest', contentType: 'application/x-protobuf', host: storageUrl, httpType: 'GET', - responseType: 'bytes', + responseType: 'byteswithdetails', urlParameters: greaterThanVersion ? `/version/${greaterThanVersion}` : '', ...credentials, }); + + if (response.status === 204) { + throw makeHTTPError( + 'promiseAjax: error response', + response.status, + response.headers.raw(), + data, + new Error().stack + ); + } + + return data; } async function getStorageRecords(