From 3fd2225faeb0d059303e50afc48cd5712d3548b5 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 15 Mar 2016 18:09:50 +0000 Subject: [PATCH] Don't try to restore if rid, jid and sid are passed in. Fixes an issue whereby those tokens are passed in but not used and instead converse attempts to restore the session (and then totally ignores the tokens when it fails). Makes sense to me that you'd want your passed in tokens to be used always, even when there are restorable tokens. --- src/converse-core.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/converse-core.js b/src/converse-core.js index 860b3693a..578f1c57c 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -1685,7 +1685,9 @@ this.attemptPreboundSession = function (tokens) { /* Handle session resumption or initialization when prebind is being used. */ - if (this.keepalive) { + if (this.jid && this.sid && this.rid) { + return this.connection.attach(this.jid, this.sid, this.rid, this.onConnectStatusChanged); + } else if (this.keepalive) { if (!this.jid) { throw new Error("initConnection: when using 'keepalive' with 'prebind, you must supply the JID of the current user."); } @@ -1695,13 +1697,9 @@ this.log("Could not restore session for jid: "+this.jid+" Error message: "+e.message); this.clearSession(); // If there's a roster, we want to clear it (see #555) } - } else { // Not keepalive - if (this.jid && this.sid && this.rid) { - return this.connection.attach(this.jid, this.sid, this.rid, this.onConnectStatusChanged); - } else { - throw new Error("initConnection: If you use prebind and not keepalive, "+ - "then you MUST supply JID, RID and SID values"); - } + } else { + throw new Error("initConnection: If you use prebind and not keepalive, "+ + "then you MUST supply JID, RID and SID values"); } // We haven't been able to attach yet. Let's see if there // is a prebind_url, otherwise there's nothing with which