From f09eb2238fe0f0f96ad2c85b8d3ed735e9df969a Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Sat, 13 Jun 2020 15:27:59 +0200 Subject: Avoid crashing when processing the UserRemove message --- src/main/java/se/lublin/humla/protocol/ModelHandler.java | 15 +++++++++++---- 1 file 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); } -- cgit v1.2.3