From 64b9d411cb007516ac29f64e12096fae3eb316fa Mon Sep 17 00:00:00 2001 From: luvletter2333 Date: Sun, 18 Apr 2021 01:34:47 +0800 Subject: [PATCH] Fix: invoke virtual method on null object when toggling WS proxy too fast --- .../org/telegram/messenger/SharedConfig.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 108ef2e8f..a763cab90 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -920,21 +920,31 @@ public class SharedConfig { @Override public void start() { if (loader != null) return; - loader = new WsLoader(); - port = ProxyManager.mkPort(); - loader.init(bean, port); - loader.start(); - - if (SharedConfig.proxyEnabled && SharedConfig.currentProxy == this) { - ConnectionsManager.setProxySettings(true, address, port, username, password, secret); + synchronized (this) + { + loader = new WsLoader(); + port = ProxyManager.mkPort(); + loader.init(bean, port); + loader.start(); + if (SharedConfig.proxyEnabled && SharedConfig.currentProxy == this) { + ConnectionsManager.setProxySettings(true, address, port, username, password, secret); + } } } @Override public void stop() { if (loader == null) return; - loader.stop(); - loader = null; + ConnectionsManager.setProxySettings(false, address, port, username, password, secret); + UIUtil.runOnIoDispatcher(() -> { + synchronized (this) + { + if (loader == null) + return; + loader.stop(); + loader = null; + } + }); } @Override