From e1421dfd3009d60f50441b8bf571b7f19808bfcd Mon Sep 17 00:00:00 2001 From: Termina1 Date: Wed, 12 Nov 2025 20:02:19 +0200 Subject: [PATCH] fix disabled methods after autodetector --- .../io/emeraldpay/dshackle/upstream/calls/CallMethods.kt | 4 ++++ .../dshackle/upstream/calls/ManagedCallMethods.kt | 7 +++++++ .../dshackle/upstream/generic/GenericUpstream.kt | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/CallMethods.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/CallMethods.kt index e793da9f..d79d3ecd 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/CallMethods.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/CallMethods.kt @@ -65,4 +65,8 @@ interface CallMethods { * Returns list of methods conforming the methods group */ fun getGroupMethods(groupName: String): Set + + fun getDisabledMethods(): Set { + return setOf() + } } diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/ManagedCallMethods.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/ManagedCallMethods.kt index d4ac669e..67a9fc0d 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/ManagedCallMethods.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/ManagedCallMethods.kt @@ -52,6 +52,9 @@ class ManagedCallMethods( private val allAllowed: Set = Collections.unmodifiableSet( delegated.keys + allGroupEnabled - allGroupDisabled.toSet() + enabled - disabled, ) + private val allDisabled: Set = Collections.unmodifiableSet( + allGroupDisabled.toSet() + disabled + ) private val quorum: MutableMap> = HashMap() private val staticResponse: MutableMap = HashMap() @@ -101,6 +104,10 @@ class ManagedCallMethods( return allAllowed } + override fun getDisabledMethods(): Set { + return allDisabled + } + override fun isHardcoded(method: String): Boolean { return this.staticResponse.containsKey(method) || delegate.isHardcoded(method) } diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/generic/GenericUpstream.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/generic/GenericUpstream.kt index b5fa61df..ecd3e63a 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/generic/GenericUpstream.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/generic/GenericUpstream.kt @@ -296,6 +296,7 @@ open class GenericUpstream( if (config.methods == null) { config.methods = UpstreamsConfig.Methods(mutableSetOf(), mutableSetOf()) } + val allDisabled = getMethods().getDisabledMethods() val enableMethods = rpcDetector .filter { (_, enabled) -> enabled } @@ -312,6 +313,7 @@ open class GenericUpstream( UpstreamsConfig.Methods( enableMethods .minus(disableMethods) + .filter { !allDisabled.contains(it.name) }.toSet() .plus(config.methods!!.enabled), disableMethods .minus(enableMethods)