From 36d7564c3a7dfa1cb9fa561559470e7d8b7f6aab Mon Sep 17 00:00:00 2001 From: games647 Date: Fri, 19 Aug 2016 21:07:29 +0200 Subject: [PATCH] Fix race condition when waiting for bukkit message while bungee redirects player --- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- .../games647/fastlogin/bungee/BungeeLoginSession.java | 9 +++++++++ .../fastlogin/bungee/tasks/ForceLoginTask.java | 10 ++++++++-- core/pom.xml | 2 +- pom.xml | 2 +- universal/pom.xml | 2 +- 7 files changed, 22 insertions(+), 7 deletions(-) diff --git a/bukkit/pom.xml b/bukkit/pom.xml index abe30ba0..d0449c82 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin - 1.7.1 + 1.8 ../pom.xml diff --git a/bungee/pom.xml b/bungee/pom.xml index 5c34e5a6..e8191fbd 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin - 1.7.1 + 1.8 ../pom.xml diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/BungeeLoginSession.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/BungeeLoginSession.java index b830b377..e3224b11 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/BungeeLoginSession.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/BungeeLoginSession.java @@ -6,6 +6,7 @@ import com.github.games647.fastlogin.core.PlayerProfile; public class BungeeLoginSession extends LoginSession { private boolean alreadySaved; + private boolean alreadyLogged; public BungeeLoginSession(String username, boolean registered, PlayerProfile profile) { super(username, registered, profile); @@ -22,4 +23,12 @@ public class BungeeLoginSession extends LoginSession { public void setAlreadySaved(boolean alreadySaved) { this.alreadySaved = alreadySaved; } + + public boolean isAlreadyLogged() { + return alreadyLogged; + } + + public void setAlreadyLogged(boolean alreadyLogged) { + this.alreadyLogged = alreadyLogged; + } } diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java index 6b40c2ab..0c28fe21 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/tasks/ForceLoginTask.java @@ -48,8 +48,10 @@ public class ForceLoginTask implements Runnable { //save will happen on success message from bukkit sendBukkitLoginNotification(autoRegister); } else if (session.needsRegistration()) { + session.setAlreadyLogged(true); forceRegister(session, authPlugin); } else if (authPlugin.forceLogin(player)) { + session.setAlreadyLogged(true); forceLogin(session, authPlugin); } } else { @@ -66,8 +68,10 @@ public class ForceLoginTask implements Runnable { } private void forceRegister(BungeeLoginSession session, BungeeAuthPlugin authPlugin) { + session.setAlreadyLogged(true); + String password = plugin.generateStringPassword(); - if (session.isAlreadySaved() || authPlugin.forceRegister(player, password)) { + if (session.isAlreadyLogged()|| authPlugin.forceRegister(player, password)) { //save will happen on success message from bukkit sendBukkitLoginNotification(true); String message = plugin.getCore().getMessage("auto-register"); @@ -79,7 +83,9 @@ public class ForceLoginTask implements Runnable { } private void forceLogin(BungeeLoginSession session, BungeeAuthPlugin authPlugin) { - if (session.isAlreadySaved() || authPlugin.forceLogin(player)) { + session.setAlreadyLogged(true); + + if (session.isAlreadyLogged() || authPlugin.forceLogin(player)) { //save will happen on success message from bukkit sendBukkitLoginNotification(false); String message = plugin.getCore().getMessage("auto-login"); diff --git a/core/pom.xml b/core/pom.xml index 208feeee..f1260ee6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin - 1.7.1 + 1.8 ../pom.xml diff --git a/pom.xml b/pom.xml index f5ed5e99..1d3ad65b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ pom FastLogin - 1.7.1 + 1.8 2015 https://www.spigotmc.org/resources/fastlogin.14153/ diff --git a/universal/pom.xml b/universal/pom.xml index 6261c432..5949337a 100644 --- a/universal/pom.xml +++ b/universal/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin - 1.7.1 + 1.8 ../pom.xml