diff options
author | Daniel Lublin <daniel@lublin.se> | 2020-06-13 16:27:59 +0300 |
---|---|---|
committer | Daniel Lublin <daniel@lublin.se> | 2020-06-13 18:08:48 +0300 |
commit | f09eb2238fe0f0f96ad2c85b8d3ed735e9df969a (patch) | |
tree | a13d289db3feab2ed43b27d7058f4332f73a16a2 | |
parent | 34d89d0f8272e3379f4b7f7a2f355698c5635430 (diff) |
Avoid crashing when processing the UserRemove message
-rw-r--r-- | src/main/java/se/lublin/humla/protocol/ModelHandler.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/se/lublin/humla/protocol/ModelHandler.java b/src/main/java/se/lublin/humla/protocol/ModelHandler.java index 04a7a8b..0aaa6d0 100644 --- a/src/main/java/se/lublin/humla/protocol/ModelHandler.java +++ b/src/main/java/se/lublin/humla/protocol/ModelHandler.java @@ -411,14 +411,21 @@ public class ModelHandler extends HumlaTCPMessageListener.Stub { final User actor = mUsers.get(msg.getActor()); final String reason = msg.getReason(); + // TODO? hackish fix of crash that was happening. The original logic + // here is possible flawed, regarding presence of session, actor etc. + // Consult Mumble.proto and official client? + final String userName = user != null ? user.getName() : "unknown"; + final String actorName = actor != null ? actor.getName() : "unknown"; if(msg.getSession() == mSession) - mLogger.logWarning(mContext.getString(msg.getBan() ? R.string.chat_notify_kick_ban_self : R.string.chat_notify_kick_self, MessageFormatter.highlightString(actor.getName()), reason)); + mLogger.logWarning(mContext.getString(msg.getBan() ? R.string.chat_notify_kick_ban_self : R.string.chat_notify_kick_self, MessageFormatter.highlightString(actorName), reason)); else if(actor != null) - mLogger.logWarning(mContext.getString(msg.getBan() ? R.string.chat_notify_kick_ban : R.string.chat_notify_kick, MessageFormatter.highlightString(actor.getName()), reason, MessageFormatter.highlightString(user.getName()))); + mLogger.logWarning(mContext.getString(msg.getBan() ? R.string.chat_notify_kick_ban : R.string.chat_notify_kick, MessageFormatter.highlightString(actorName), reason, MessageFormatter.highlightString(userName))); else - mLogger.logInfo(mContext.getString(R.string.chat_notify_disconnected, MessageFormatter.highlightString(user.getName()))); + mLogger.logInfo(mContext.getString(R.string.chat_notify_disconnected, MessageFormatter.highlightString(userName))); - user.setChannel(null); + if (user != null) { + user.setChannel(null); + } mObserver.onUserRemoved(user, reason); } |