fixed 1.8 comparison, invalidate detection fails

fixes #231
This commit is contained in:
creeper123123321 2023-07-09 08:59:10 -03:00
parent bb07aaebb8
commit f09da91810
3 changed files with 13 additions and 5 deletions

View File

@ -96,7 +96,7 @@ dependencies {
implementation("org.jline:jline-terminal-jansi:3.23.0") implementation("org.jline:jline-terminal-jansi:3.23.0")
implementation("org.slf4j:slf4j-api:$slf4jVer") implementation("org.slf4j:slf4j-api:$slf4jVer")
val ktorVersion = "2.3.0" val ktorVersion = "2.3.2"
implementation("io.ktor:ktor-network-tls-certificates-jvm:$ktorVersion") implementation("io.ktor:ktor-network-tls-certificates-jvm:$ktorVersion")
implementation("io.ktor:ktor-server-websockets:$ktorVersion") implementation("io.ktor:ktor-server-websockets:$ktorVersion")
implementation("io.ktor:ktor-server-netty-jvm:$ktorVersion") implementation("io.ktor:ktor-server-netty-jvm:$ktorVersion")

View File

@ -21,7 +21,7 @@ class BackEndInit(val connectionData: ConnectionData, val proxyUri: URI?, val pr
val user = UserConnectionImpl(ch, true) val user = UserConnectionImpl(ch, true)
val pipeline = ProtocolPipelineImpl(user) val pipeline = ProtocolPipelineImpl(user)
val version = connectionData.backServerVer!! val version = connectionData.backServerVer!!
val isLegacy = LegacyProtocolVersion.protocolCompare(version, ProtocolVersion.v_1_6_4.version) <= 0 val isLegacy = LegacyProtocolVersion.protocolCompare(version, LegacyProtocolVersion.r1_6_4.version) <= 0
if (isLegacy) { if (isLegacy) {
pipeline.add(PreNettyBaseProtocol.INSTANCE) pipeline.add(PreNettyBaseProtocol.INSTANCE)

View File

@ -32,7 +32,7 @@ import java.util.concurrent.TimeUnit
object ProtocolDetector { object ProtocolDetector {
val coroutineScope = CoroutineScope(SupervisorJob()) val coroutineScope = CoroutineScope(SupervisorJob())
private val loader = CacheLoader.from<InetSocketAddress, CompletableFuture<ProtocolVersion>> { address -> val loader = CacheLoader.from<InetSocketAddress, CompletableFuture<ProtocolVersion>> { address ->
val future = CompletableFuture<ProtocolVersion>() val future = CompletableFuture<ProtocolVersion>()
coroutineScope.launch { coroutineScope.launch {
try { try {
@ -78,9 +78,17 @@ object ProtocolDetector {
future future
} }
private val SERVER_VER = CacheBuilder.newBuilder() private val versionCache = CacheBuilder.newBuilder()
.expireAfterWrite(VIAaaSConfig.protocolDetectorCache.toLong(), TimeUnit.SECONDS) .expireAfterWrite(VIAaaSConfig.protocolDetectorCache.toLong(), TimeUnit.SECONDS)
.build(loader) .build(loader)
fun detectVersion(address: InetSocketAddress): CompletableFuture<ProtocolVersion> = SERVER_VER[address] fun detectVersion(address: InetSocketAddress): CompletableFuture<ProtocolVersion> {
val future = versionCache[address]
future.whenComplete { _, throwable ->
if (throwable != null) {
versionCache.invalidate(address)
}
}
return future
}
} }