From 6a895f0e27ccd8e9b590a978a26706f3084a6e3d Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Mon, 23 Oct 2017 14:38:43 -0700 Subject: [PATCH] Better handling of online/offline behavior, socket shutdown (#1593) * Online/offline: Always stop timer, don't connect if closed * Sockets: Send our own close event faster, shutdown only on close Seems that we were too-aggressively disconnecting from all socket events. Also, we should be able to send our own close event a lot faster with no ill effects. * Catch-up libtextsecure changes --- js/background.js | 4 ++++ js/libtextsecure.js | 8 +++++--- libtextsecure/message_receiver.js | 6 ++++-- libtextsecure/websocket-resources.js | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/js/background.js b/js/background.js index 7ea19d76a..270ce0657 100644 --- a/js/background.js +++ b/js/background.js @@ -185,6 +185,10 @@ disconnectTimer = null; return; } + if (disconnectTimer) { + clearTimeout(disconnectTimer); + disconnectTimer = null; + } connect(); } diff --git a/js/libtextsecure.js b/js/libtextsecure.js index a28b064de..9547372c5 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -38351,7 +38351,7 @@ var TextSecureServer = (function() { ev.code = code; ev.reason = reason; this.dispatchEvent(ev); - }.bind(this), 10000); + }.bind(this), 1000); }; }; window.WebSocketResource.prototype = new textsecure.EventTarget(); @@ -38435,6 +38435,10 @@ MessageReceiver.prototype = new textsecure.EventTarget(); MessageReceiver.prototype.extend({ constructor: MessageReceiver, connect: function() { + if (this.calledClose) { + return; + } + this.hasConnected = true; if (this.socket && this.socket.readyState !== WebSocket.CLOSED) { @@ -38485,8 +38489,6 @@ MessageReceiver.prototype.extend({ this.wsr.close(3000, 'called close'); } - this.shutdown(); - return this.drain(); }, onopen: function() { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index cfb11c7f0..7c32df699 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -28,6 +28,10 @@ MessageReceiver.prototype = new textsecure.EventTarget(); MessageReceiver.prototype.extend({ constructor: MessageReceiver, connect: function() { + if (this.calledClose) { + return; + } + this.hasConnected = true; if (this.socket && this.socket.readyState !== WebSocket.CLOSED) { @@ -78,8 +82,6 @@ MessageReceiver.prototype.extend({ this.wsr.close(3000, 'called close'); } - this.shutdown(); - return this.drain(); }, onopen: function() { diff --git a/libtextsecure/websocket-resources.js b/libtextsecure/websocket-resources.js index 239c9f7e1..30a519fb1 100644 --- a/libtextsecure/websocket-resources.js +++ b/libtextsecure/websocket-resources.js @@ -182,7 +182,7 @@ ev.code = code; ev.reason = reason; this.dispatchEvent(ev); - }.bind(this), 10000); + }.bind(this), 1000); }; }; window.WebSocketResource.prototype = new textsecure.EventTarget();