diff options
author | Vitaly Takmazov | 2017-10-10 09:36:08 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2017-10-10 09:38:32 +0300 |
commit | 41c4ea59c8d1929a1f8b8f8536ffa696e64e1336 (patch) | |
tree | 74564e1176bfa2ae4fa388bddae13e396f988834 /juick-xmpp/src | |
parent | 448fc7e84732422011186a9a4633c345e9c6208e (diff) |
xmpp: mark jids inactive when resource-constraint is received
Diffstat (limited to 'juick-xmpp/src')
-rw-r--r-- | juick-xmpp/src/main/java/com/juick/components/JuickBot.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java index cefacb56..f79db78e 100644 --- a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java +++ b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java @@ -204,10 +204,20 @@ public class JuickBot implements StanzaListener, AutoCloseable { } public boolean incomingMessage(Message msg) { - if (StringUtils.isBlank(msg.getBody()) || (msg.getType() != null && msg.getType().equals(Message.Type.ERROR))) { + if (StringUtils.isBlank(msg.getBody())) { + return false; + } + if (msg.getType() != null && msg.getType().equals(Message.Type.ERROR)) { + StanzaError error = msg.getExtension(StanzaError.class); + if (error.getCondition().equals(Condition.RESOURCE_CONSTRAINT)) { + // offline query is full, deactivating this jid + if (userService.setActiveStatusForJID(msg.getFrom().toEscapedString(), UserService.ActiveStatus.Inactive)) { + logger.info("{} is inactive now", msg.getFrom()); + return true; + } + } return false; } - String username = msg.getTo().getLocal(); User user_from; |