aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-09-17 11:14:11 +0200
committerChristian Schneppe <christian@pix-art.de>2016-09-17 11:14:11 +0200
commitc3f3f662592fda629d5eea625a387b04f666bc92 (patch)
tree68db2cc51a63d2b8a75bbc7e31fb6a4114827be6
parent4f5aba38e2011593dc5500b0e68675f6c78eaa9e (diff)
store jid if it was changed during bind
-rw-r--r--src/main/java/de/pixart/messenger/entities/Account.java9
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/XmppConnection.java7
2 files changed, 11 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Account.java b/src/main/java/de/pixart/messenger/entities/Account.java
index bd5555201..7a825faab 100644
--- a/src/main/java/de/pixart/messenger/entities/Account.java
+++ b/src/main/java/de/pixart/messenger/entities/Account.java
@@ -276,9 +276,12 @@ public class Account extends AbstractEntity {
return jid.getLocalpart();
}
- public void setJid(final Jid jid) {
- this.jid = jid;
- }
+ public boolean setJid(final Jid next) {
+ final Jid prev = this.jid != null ? this.jid.toBareJid() : null;
+ this.jid = next;
+ return prev == null || (next != null && !prev.equals(next.toBareJid())
+ );
+ }
public Jid getServer() {
return jid.toDomainJid();
diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
index ef07d379a..8f1948b50 100644
--- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
@@ -994,8 +994,11 @@ public class XmppConnection implements Runnable {
final Element jid = bind.findChild("jid");
if (jid != null && jid.getContent() != null) {
try {
- account.setJid(Jid.fromString(jid.getContent()));
- if (streamFeatures.hasChild("session")
+ if (account.setJid(Jid.fromString(jid.getContent()))) {
+ Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": bare jid changed during bind. updating database");
+ mXmppConnectionService.databaseBackend.updateAccount(account);
+ }
+ if (streamFeatures.hasChild("session")
&& !streamFeatures.findChild("session").hasChild("optional")) {
sendStartSession();
} else {