From d9b30671782f59a2d92738808ff14ff8bbccc40b Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Sat, 11 Jul 2026 17:57:51 +0200 Subject: [PATCH] Hotfix to detect an issue when credentials were cleared --- .../org/jivesoftware/gui/LoginUIPanel.java | 8 +++++++ .../settings/local/LocalPreferences.java | 21 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/core/src/main/java/org/jivesoftware/gui/LoginUIPanel.java b/core/src/main/java/org/jivesoftware/gui/LoginUIPanel.java index 6be2d2f32..0ae84ffde 100644 --- a/core/src/main/java/org/jivesoftware/gui/LoginUIPanel.java +++ b/core/src/main/java/org/jivesoftware/gui/LoginUIPanel.java @@ -1043,6 +1043,14 @@ public class LoginUIPanel extends javax.swing.JPanel implements KeyListener, Foc // Persist information String username = getUsername(); String serverName = getServerName(); + //FIXME sometimes when the auto login enabled the + if (isBlank(username) || isBlank(serverName)) { + Log.error("No Username or Server"); + loginDialog.setVisible(true); + String errorMessage = "No Username or Server. Available props are " + localPref; + MessageDialog.showErrorDialog(loginDialog, errorMessage, null); + return; + } EntityBareJid bareJid = JidCreate.entityBareFromOrNull(getBareJid()); String password = getPassword(); diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java b/core/src/main/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java index 1052d0027..6e6fa11fb 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/settings/local/LocalPreferences.java @@ -123,6 +123,11 @@ public class LocalPreferences { props.remove(userPasswordProp); return; } + // Don't save empty password, this can be a bug + if (password.isEmpty()) { + Log.error("The password for " + bareJid + " is empty"); + return; + } String pw = Encryptor.encrypt(password); setString(userPasswordProp, pw); } @@ -1227,4 +1232,20 @@ public class LocalPreferences { public int getMaxCurrentHistorySize() { return getInt("currentHistoryMaxSize", 20); } + + @Override + public String toString() { + StringBuilder propsText = new StringBuilder(); + for (var entry : props.entrySet()) { + String name = entry.getKey().toString(); + String val = entry.getValue().toString(); + if (name.startsWith("password") && !name.equals("passwordSaved")) { + if (!isBlank(val)) { + val = "HIDDEN"; + } + } + propsText.append(name).append("=").append(val).append('\n'); + } + return propsText.toString(); + } }