diff --git a/LaunchServer/source/auth/MySQLSourceConfig.java b/LaunchServer/source/auth/MySQLSourceConfig.java index 8e3128f..af0b732 100644 --- a/LaunchServer/source/auth/MySQLSourceConfig.java +++ b/LaunchServer/source/auth/MySQLSourceConfig.java @@ -7,7 +7,6 @@ import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import com.zaxxer.hikari.HikariDataSource; import launcher.LauncherAPI; -import launcher.helper.IOHelper; import launcher.helper.LogHelper; import launcher.helper.VerifyHelper; import launcher.serialize.config.ConfigObject; @@ -76,7 +75,7 @@ mysqlSource.setLoginTimeout(TIMEOUT); mysqlSource.setConnectTimeout(TIMEOUT * 1000); mysqlSource.setPrepStmtCacheSize(STMT_CACHE_SIZE); - mysqlSource.setPrepStmtCacheSqlLimit(IOHelper.BUFFER_SIZE); + mysqlSource.setPrepStmtCacheSqlLimit(2048); // Set credentials mysqlSource.setServerName(address); diff --git a/LaunchServer/source/auth/handler/CachedAuthHandler.java b/LaunchServer/source/auth/handler/CachedAuthHandler.java index 4e835b7..1f77197 100644 --- a/LaunchServer/source/auth/handler/CachedAuthHandler.java +++ b/LaunchServer/source/auth/handler/CachedAuthHandler.java @@ -8,14 +8,13 @@ import launcher.LauncherAPI; import launcher.helper.CommonHelper; -import launcher.helper.IOHelper; import launcher.helper.SecurityHelper; import launcher.request.auth.JoinServerRequest; import launcher.serialize.config.entry.BlockConfigEntry; public abstract class CachedAuthHandler extends AuthHandler { - private final Map entryCache = new HashMap<>(IOHelper.BUFFER_SIZE); - private final Map usernamesCache = new HashMap<>(IOHelper.BUFFER_SIZE); + private final Map entryCache = new HashMap<>(); + private final Map usernamesCache = new HashMap<>(); @LauncherAPI protected CachedAuthHandler(BlockConfigEntry block) { diff --git a/LaunchServer/source/auth/handler/FileAuthHandler.java b/LaunchServer/source/auth/handler/FileAuthHandler.java index ab3432f..a937876 100644 --- a/LaunchServer/source/auth/handler/FileAuthHandler.java +++ b/LaunchServer/source/auth/handler/FileAuthHandler.java @@ -34,8 +34,8 @@ private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); // Storage - private final Map entryMap = new HashMap<>(IOHelper.BUFFER_SIZE); - private final Map usernamesMap = new HashMap<>(IOHelper.BUFFER_SIZE); + private final Map entryMap = new HashMap<>(); + private final Map usernamesMap = new HashMap<>(); @LauncherAPI protected FileAuthHandler(BlockConfigEntry block) { diff --git a/LaunchServer/source/auth/provider/FileAuthProvider.java b/LaunchServer/source/auth/provider/FileAuthProvider.java index 5970259..ff99975 100644 --- a/LaunchServer/source/auth/provider/FileAuthProvider.java +++ b/LaunchServer/source/auth/provider/FileAuthProvider.java @@ -22,7 +22,7 @@ private final Path file; // Cache - private final Map entries = new HashMap<>(IOHelper.BUFFER_SIZE); + private final Map entries = new HashMap<>(); private final Object cacheLock = new Object(); private FileTime cacheLastModified; diff --git a/LaunchServer/source/binary/JARLauncherBinary.java b/LaunchServer/source/binary/JARLauncherBinary.java index f10fd14..9f56c6a 100644 --- a/LaunchServer/source/binary/JARLauncherBinary.java +++ b/LaunchServer/source/binary/JARLauncherBinary.java @@ -43,7 +43,7 @@ try (JarOutputStream output = new JarOutputStream(IOHelper.newOutput(JAR_BINARY_FILE))) { output.setMethod(ZipOutputStream.DEFLATED); output.setLevel(Deflater.BEST_COMPRESSION); - try (InputStream input = new GZIPInputStream(IOHelper.newInput(IOHelper.getResourceURL("Launcher.pack.gz")), IOHelper.BUFFER_SIZE)) { + try (InputStream input = new GZIPInputStream(IOHelper.newInput(IOHelper.getResourceURL("Launcher.pack.gz")))) { Pack200.newUnpacker().unpack(input, output); } @@ -53,7 +53,7 @@ } // Write launcher runtime dir - Map runtime = new HashMap<>(IOHelper.BUFFER_SIZE); + Map runtime = new HashMap<>(); IOHelper.walk(RUNTIME_DIR, new RuntimeDirVisitor(output, runtime), false); // Create launcher config file diff --git a/LaunchServer/source/command/handler/CommandHandler.java b/LaunchServer/source/command/handler/CommandHandler.java index 2557830..9af003c 100644 --- a/LaunchServer/source/command/handler/CommandHandler.java +++ b/LaunchServer/source/command/handler/CommandHandler.java @@ -12,7 +12,6 @@ import java.util.concurrent.ConcurrentHashMap; import launcher.LauncherAPI; -import launcher.helper.IOHelper; import launcher.helper.LogHelper; import launcher.helper.VerifyHelper; import launchserver.LaunchServer; @@ -146,7 +145,7 @@ // Read line char by char Collection result = new LinkedList<>(); - StringBuilder builder = new StringBuilder(IOHelper.BUFFER_SIZE); + StringBuilder builder = new StringBuilder(); for (int i = 0; i < line.length() + 1; i++) { boolean end = i >= line.length(); char ch = end ? 0 : line.charAt(i); diff --git a/LaunchServer/source/response/ServerSocketHandler.java b/LaunchServer/source/response/ServerSocketHandler.java index cb89dee..4131ec5 100644 --- a/LaunchServer/source/response/ServerSocketHandler.java +++ b/LaunchServer/source/response/ServerSocketHandler.java @@ -15,7 +15,6 @@ import launcher.LauncherAPI; import launcher.helper.CommonHelper; -import launcher.helper.IOHelper; import launcher.helper.LogHelper; import launcher.helper.VerifyHelper; import launcher.request.Request; @@ -64,8 +63,8 @@ // Set socket params serverSocket.setReuseAddress(true); - serverSocket.setPerformancePreferences(2, 1, 0); - serverSocket.setReceiveBufferSize(IOHelper.BUFFER_SIZE); + serverSocket.setPerformancePreferences(1, 0, 2); + serverSocket.setReceiveBufferSize(0x10000); serverSocket.bind(server.config.getSocketAddress()); LogHelper.info("Server socket thread successfully started"); diff --git a/LaunchServer/source/response/auth/AuthResponse.java b/LaunchServer/source/response/auth/AuthResponse.java index e91b3de..a5c2e8b 100644 --- a/LaunchServer/source/response/auth/AuthResponse.java +++ b/LaunchServer/source/response/auth/AuthResponse.java @@ -25,7 +25,7 @@ @Override public void reply() throws Exception { String login = input.readString(255); - byte[] encryptedPassword = input.readByteArray(IOHelper.BUFFER_SIZE); + byte[] encryptedPassword = input.readByteArray(SecurityHelper.CRYPTO_MAX_LENGTH); // Decrypt password String password; diff --git a/Launcher/source/Launcher.java b/Launcher/source/Launcher.java index d55483f..c921e51 100644 --- a/Launcher/source/Launcher.java +++ b/Launcher/source/Launcher.java @@ -70,7 +70,7 @@ private static final AtomicReference CONFIG = new AtomicReference<>(); // Version info - @LauncherAPI public static final String VERSION = "15.1"; + @LauncherAPI public static final String VERSION = "15.1-fix1"; @LauncherAPI public static final String BUILD = readBuildNumber(); @LauncherAPI public static final int PROTOCOL_MAGIC = 0x724724_16; diff --git a/Launcher/source/client/ClientLauncher.java b/Launcher/source/client/ClientLauncher.java index 42b01fe..4244bc8 100644 --- a/Launcher/source/client/ClientLauncher.java +++ b/Launcher/source/client/ClientLauncher.java @@ -343,8 +343,8 @@ launcherSign = input.readByteArray(-SecurityHelper.RSA_KEY_LENGTH); // Client paths - assetDir = IOHelper.toPath(input.readString(IOHelper.BUFFER_SIZE)); - clientDir = IOHelper.toPath(input.readString(IOHelper.BUFFER_SIZE)); + assetDir = IOHelper.toPath(input.readString(0)); + clientDir = IOHelper.toPath(input.readString(0)); // Client params pp = new PlayerProfile(input); @@ -361,8 +361,8 @@ output.writeByteArray(launcherSign, -SecurityHelper.RSA_KEY_LENGTH); // Client paths - output.writeString(assetDir.toString(), IOHelper.BUFFER_SIZE); - output.writeString(clientDir.toString(), IOHelper.BUFFER_SIZE); + output.writeString(assetDir.toString(), 0); + output.writeString(clientDir.toString(), 0); // Client params pp.write(output); diff --git a/Launcher/source/helper/IOHelper.java b/Launcher/source/helper/IOHelper.java index 64e4bff..5e41a8f 100644 --- a/Launcher/source/helper/IOHelper.java +++ b/Launcher/source/helper/IOHelper.java @@ -67,7 +67,7 @@ Integer.parseUnsignedInt(System.getProperty("launcher.httpTimeout", Integer.toString(5000))), VerifyHelper.POSITIVE, "launcher.httpTimeout can't be <= 0"); @LauncherAPI public static final int BUFFER_SIZE = VerifyHelper.verifyInt( - Integer.parseUnsignedInt(System.getProperty("launcher.bufferSize", Integer.toString(0x10000))), + Integer.parseUnsignedInt(System.getProperty("launcher.bufferSize", Integer.toString(4096))), VerifyHelper.POSITIVE, "launcher.bufferSize can't be <= 0"); // Platform-dependent @@ -225,17 +225,17 @@ @LauncherAPI public static byte[] newBuffer() { - return new byte[BUFFER_SIZE]; + return new byte[4096]; } @LauncherAPI public static ByteArrayOutputStream newByteArrayOutput() { - return new ByteArrayOutputStream(BUFFER_SIZE); + return new ByteArrayOutputStream(); } @LauncherAPI public static char[] newCharBuffer() { - return new char[BUFFER_SIZE]; + return new char[4096]; } @LauncherAPI @@ -273,7 +273,7 @@ @LauncherAPI public static BufferedReader newReader(InputStream input, Charset charset) { - return new BufferedReader(new InputStreamReader(input, charset), BUFFER_SIZE); + return new BufferedReader(new InputStreamReader(input, charset)); } @LauncherAPI @@ -295,7 +295,7 @@ @LauncherAPI public static BufferedWriter newWriter(OutputStream output) { - return new BufferedWriter(new OutputStreamWriter(output, UNICODE_CHARSET), BUFFER_SIZE); + return new BufferedWriter(new OutputStreamWriter(output, UNICODE_CHARSET)); } @LauncherAPI @@ -481,9 +481,9 @@ // Set socket options socket.setSoTimeout(SOCKET_TIMEOUT); socket.setTrafficClass(0b11100); - socket.setSendBufferSize(BUFFER_SIZE); - socket.setReceiveBufferSize(BUFFER_SIZE); - socket.setPerformancePreferences(0, 1, 2); + socket.setSendBufferSize(0x100000); + socket.setReceiveBufferSize(0x100000); + socket.setPerformancePreferences(1, 0, 2); } @LauncherAPI diff --git a/Launcher/source/helper/LogHelper.java b/Launcher/source/helper/LogHelper.java index 9364d0f..7bdf21e 100644 --- a/Launcher/source/helper/LogHelper.java +++ b/Launcher/source/helper/LogHelper.java @@ -163,7 +163,7 @@ @LauncherAPI public static String toString(Throwable exc) { - try (StringWriter sw = new StringWriter(IOHelper.BUFFER_SIZE)) { + try (StringWriter sw = new StringWriter()) { try (PrintWriter pw = new PrintWriter(sw)) { exc.printStackTrace(pw); } @@ -199,7 +199,7 @@ } // Date-time - Ansi ansi = new Ansi(IOHelper.BUFFER_SIZE); + Ansi ansi = new Ansi(); ansi.fg(Ansi.Color.WHITE).a(dateTime); // Level @@ -227,7 +227,7 @@ } private static String ansiFormatVersion(String product) { - return new Ansi(IOHelper.BUFFER_SIZE).bold(). // Setup + return new Ansi().bold(). // Setup fgBright(Ansi.Color.MAGENTA).a("sashok724's "). // sashok724's fgBright(Ansi.Color.CYAN).a(product). // Product fgBright(Ansi.Color.WHITE).a(" v").fgBright(Ansi.Color.BLUE).a(Launcher.VERSION). // Version diff --git a/Launcher/source/request/auth/AuthRequest.java b/Launcher/source/request/auth/AuthRequest.java index 70362fe..fe2cf4f 100644 --- a/Launcher/source/request/auth/AuthRequest.java +++ b/Launcher/source/request/auth/AuthRequest.java @@ -6,7 +6,6 @@ import launcher.Launcher; import launcher.LauncherAPI; import launcher.client.PlayerProfile; -import launcher.helper.IOHelper; import launcher.helper.SecurityHelper; import launcher.helper.VerifyHelper; import launcher.request.Request; @@ -37,7 +36,7 @@ @Override protected Result requestDo(HInput input, HOutput output) throws IOException { output.writeString(login, 255); - output.writeByteArray(encryptedPassword, IOHelper.BUFFER_SIZE); + output.writeByteArray(encryptedPassword, SecurityHelper.CRYPTO_MAX_LENGTH); output.flush(); // Read UUID and access token diff --git a/Launcher/source/request/update/UpdateRequest.java b/Launcher/source/request/update/UpdateRequest.java index d99335b..252ab89 100644 --- a/Launcher/source/request/update/UpdateRequest.java +++ b/Launcher/source/request/update/UpdateRequest.java @@ -9,7 +9,7 @@ import java.security.SignatureException; import java.time.Duration; import java.time.Instant; -import java.util.ArrayDeque; +import java.util.LinkedList; import java.util.Map; import java.util.Objects; import java.util.Queue; @@ -84,7 +84,7 @@ totalSize = diff.mismatch.size(); // Build actions queue - Queue queue = new ArrayDeque<>(IOHelper.BUFFER_SIZE); + Queue queue = new LinkedList<>(); fillActionsQueue(queue, diff.mismatch); queue.add(Action.FINISH); @@ -175,7 +175,7 @@ long downloaded = 0L; // Download with digest update - byte[] bytes = new byte[IOHelper.BUFFER_SIZE]; + byte[] bytes = IOHelper.newBuffer(); while (downloaded < hFile.size) { int remaining = (int) Math.min(hFile.size - downloaded, bytes.length); int length = input.stream.read(bytes, 0, remaining); diff --git a/Launcher/source/serialize/config/TextConfigReader.java b/Launcher/source/serialize/config/TextConfigReader.java index 2cdb8f0..473d743 100644 --- a/Launcher/source/serialize/config/TextConfigReader.java +++ b/Launcher/source/serialize/config/TextConfigReader.java @@ -9,7 +9,6 @@ import java.util.Map; import launcher.LauncherAPI; -import launcher.helper.IOHelper; import launcher.helper.VerifyHelper; import launcher.serialize.config.entry.BlockConfigEntry; import launcher.serialize.config.entry.BooleanConfigEntry; @@ -159,7 +158,7 @@ } private ConfigEntry readString(int cc) throws IOException { - StringBuilder builder = new StringBuilder(IOHelper.BUFFER_SIZE); + StringBuilder builder = new StringBuilder(); // Read string chars while (nextChar(true) != '"') { @@ -206,7 +205,7 @@ private String readToken() throws IOException { // Read token - StringBuilder builder = new StringBuilder(IOHelper.BUFFER_SIZE); + StringBuilder builder = new StringBuilder(); while (VerifyHelper.isValidIDNameChar(ch)) { builder.append((char) ch); nextChar(false); @@ -228,7 +227,7 @@ } private int skipWhitespace(boolean eof) throws IOException { - StringBuilder skippedBuilder = new StringBuilder(IOHelper.BUFFER_SIZE); + StringBuilder skippedBuilder = new StringBuilder(); while (Character.isWhitespace(ch) || ch == '#') { if (ch == '#') { skipComment(skippedBuilder, eof);