From 2b5180a651289800856529b76d5d4c74ee34403b Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Sun, 24 Mar 2024 21:28:21 -0700 Subject: [PATCH] Add a config option for specifying kcp connection timeout --- src/main/java/emu/lunarcore/Config.java | 11 +++++++++++ src/main/java/emu/lunarcore/LunarCore.java | 2 ++ .../java/emu/lunarcore/server/game/GameServer.java | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/emu/lunarcore/Config.java b/src/main/java/emu/lunarcore/Config.java index fc7aecb..c481c8f 100644 --- a/src/main/java/emu/lunarcore/Config.java +++ b/src/main/java/emu/lunarcore/Config.java @@ -102,10 +102,15 @@ public class Config { public String name = "Lunar Core"; public String description = "A LunarCore server"; public int kcpInterval = 40; + public Integer kcpTimeout = 30; public GameServerConfig(int port) { super(port); } + + public int getKcpTimeout() { + return kcpTimeout.intValue(); + } } @Getter @@ -197,4 +202,10 @@ public class Config { public String ifixUrl = null; } + public void validate() { + if (this.gameServer.kcpTimeout == null) { + this.gameServer.kcpTimeout = 30; + } + } + } diff --git a/src/main/java/emu/lunarcore/LunarCore.java b/src/main/java/emu/lunarcore/LunarCore.java index bcac72b..6ce604a 100644 --- a/src/main/java/emu/lunarcore/LunarCore.java +++ b/src/main/java/emu/lunarcore/LunarCore.java @@ -190,6 +190,8 @@ public class LunarCore { // Sanity check if (LunarCore.getConfig() == null) { LunarCore.config = new Config(); + } else { + LunarCore.getConfig().validate(); } // Save config diff --git a/src/main/java/emu/lunarcore/server/game/GameServer.java b/src/main/java/emu/lunarcore/server/game/GameServer.java index a76919c..50ff51e 100644 --- a/src/main/java/emu/lunarcore/server/game/GameServer.java +++ b/src/main/java/emu/lunarcore/server/game/GameServer.java @@ -152,11 +152,11 @@ public class GameServer extends KcpServer { public void start() { // Setup config and init server ChannelConfig channelConfig = new ChannelConfig(); - channelConfig.nodelay(true, this.getServerConfig().getKcpInterval(), 2, true); + channelConfig.nodelay(true, getServerConfig().getKcpInterval(), 2, true); channelConfig.setMtu(1400); channelConfig.setSndwnd(256); channelConfig.setRcvwnd(256); - channelConfig.setTimeoutMillis(30 * 1000); // 30s + channelConfig.setTimeoutMillis(getServerConfig().getKcpTimeout() * 1000); channelConfig.setUseConvChannel(true); channelConfig.setAckNoDelay(true);