Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lublin <daniel@lublin.se>2020-06-13 16:27:59 +0300
committerDaniel Lublin <daniel@lublin.se>2020-06-13 18:08:48 +0300
commitf09eb2238fe0f0f96ad2c85b8d3ed735e9df969a (patch)
treea13d289db3feab2ed43b27d7058f4332f73a16a2
parent34d89d0f8272e3379f4b7f7a2f355698c5635430 (diff)
Avoid crashing when processing the UserRemove message
-rw-r--r--src/main/java/se/lublin/humla/protocol/ModelHandler.java15
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);
}