Don't poll websocket on remote expiration
This commit is contained in:
parent
fe27910221
commit
cd3d3dc8a6
2 changed files with 28 additions and 1 deletions
|
@ -1332,6 +1332,10 @@ export async function startApp(): Promise<void> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remotelyExpired) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
log.info('reconnectToWebSocket starting...');
|
log.info('reconnectToWebSocket starting...');
|
||||||
await server.reconnect();
|
await server.reconnect();
|
||||||
});
|
});
|
||||||
|
@ -1352,6 +1356,16 @@ export async function startApp(): Promise<void> {
|
||||||
void unlinkAndDisconnect();
|
void unlinkAndDisconnect();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
window.Whisper.events.on('httpResponse499', () => {
|
||||||
|
if (remotelyExpired) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.warn('background: remote expiration detected, disabling reconnects');
|
||||||
|
remotelyExpired = true;
|
||||||
|
onOffline();
|
||||||
|
});
|
||||||
|
|
||||||
async function runStorageService() {
|
async function runStorageService() {
|
||||||
StorageService.enableStorageService();
|
StorageService.enableStorageService();
|
||||||
}
|
}
|
||||||
|
@ -1554,6 +1568,10 @@ export async function startApp(): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
function onOnline() {
|
function onOnline() {
|
||||||
|
if (remotelyExpired) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
log.info('online');
|
log.info('online');
|
||||||
|
|
||||||
window.removeEventListener('online', onOnline);
|
window.removeEventListener('online', onOnline);
|
||||||
|
@ -1604,12 +1622,18 @@ export async function startApp(): Promise<void> {
|
||||||
|
|
||||||
let connectCount = 0;
|
let connectCount = 0;
|
||||||
let connecting = false;
|
let connecting = false;
|
||||||
|
let remotelyExpired = false;
|
||||||
async function connect(firstRun?: boolean) {
|
async function connect(firstRun?: boolean) {
|
||||||
if (connecting) {
|
if (connecting) {
|
||||||
log.warn('connect already running', { connectCount });
|
log.warn('connect already running', { connectCount });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remotelyExpired) {
|
||||||
|
log.warn('remotely expired, not reconnecting');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
strictAssert(server !== undefined, 'WebAPI not connected');
|
strictAssert(server !== undefined, 'WebAPI not connected');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -1711,7 +1735,9 @@ export async function startApp(): Promise<void> {
|
||||||
server.registerRequestHandler(messageReceiver);
|
server.registerRequestHandler(messageReceiver);
|
||||||
|
|
||||||
// If coming here after `offline` event - connect again.
|
// If coming here after `offline` event - connect again.
|
||||||
await server.onOnline();
|
if (!remotelyExpired) {
|
||||||
|
await server.onOnline();
|
||||||
|
}
|
||||||
|
|
||||||
void AttachmentDownloads.start({
|
void AttachmentDownloads.start({
|
||||||
logger: log,
|
logger: log,
|
||||||
|
|
|
@ -8,6 +8,7 @@ export async function handleStatusCode(status: number): Promise<void> {
|
||||||
if (status === 499) {
|
if (status === 499) {
|
||||||
log.error('Got 499 from Signal Server. Build is expired.');
|
log.error('Got 499 from Signal Server. Build is expired.');
|
||||||
await window.storage.put('remoteBuildExpiration', Date.now());
|
await window.storage.put('remoteBuildExpiration', Date.now());
|
||||||
|
window.Whisper.events.trigger('httpResponse499');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue