Ignore CUI connections with more than 3 failed attempts.

This commit is contained in:
Jesse Boyd 2018-03-07 15:00:11 +11:00
parent b430f4748a
commit 3644ad9d70
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F

View File

@ -96,6 +96,7 @@ public class LocalSession {
// Non-session related fields
private transient LocalConfiguration config;
private transient final AtomicBoolean dirty = new AtomicBoolean();
private transient int failedCuiAttempts = 0;
// Session related
private transient RegionSelector selector = new CuboidRegionSelector();
@ -1202,14 +1203,25 @@ public class LocalSession {
*/
public void handleCUIInitializationMessage(String text) {
checkNotNull(text);
if (this.failedCuiAttempts > 3) {
return;
}
String[] split = text.split("\\|");
String[] split = text.split("\\|", 2);
if (split.length > 1 && split[0].equalsIgnoreCase("v")) { // enough fields and right message
if (split[1].length() > 4) {
this.failedCuiAttempts++;
return;
}
setCUISupport(true);
try {
setCUIVersion(Integer.parseInt(split[1]));
} catch (NumberFormatException e) {
WorldEdit.logger.warning("Error while reading CUI init message: " + e.getMessage());
String msg = e.getMessage();
if (msg != null && msg.length() > 256) msg = msg.substring(0, 256);
this.failedCuiAttempts++;
WorldEdit.logger.warning("Error while reading CUI init message: " + msg);
}
}
}