From a559416e9dd8dc82e11db061c317eeaef67708f9 Mon Sep 17 00:00:00 2001 From: a10zn8 Date: Fri, 11 Nov 2022 17:48:35 +0400 Subject: [PATCH] Added support of eth_uninstallFilter --- .../kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt | 11 +++++++++-- .../dshackle/upstream/calls/DefaultEthereumMethods.kt | 1 + .../dshackle/upstream/calls/EthereumCallSelector.kt | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt b/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt index 78ec44ac..33e29573 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt @@ -255,7 +255,10 @@ open class NativeCall( } private fun getRequestDecorator(method: String): RequestDecorator = - if (method == "eth_getFilterChanges") GetFilterUpdatesDecorator() else NoneRequestDecorator() + if (method == "eth_getFilterChanges" || method == "eth_uninstallFilter") + GetFilterUpdatesDecorator() + else + NoneRequestDecorator() private fun getResultDecorator(method: String): ResultDecorator = if (CreateFilterDecorator.createFilterMethods.contains(method)) CreateFilterDecorator() else NoneResultDecorator() @@ -378,7 +381,11 @@ open class NativeCall( companion object { const val quoteCode = '"'.code.toByte() - val createFilterMethods = listOf("eth_getFilterChanges", "eth_newFilter", "eth_newBlockFilter") + val createFilterMethods = listOf( + "eth_getFilterChanges", + "eth_newFilter", + "eth_newBlockFilter" + ) } override fun processResult(result: QuorumRpcReader.Result): ByteArray { val bytes = result.value diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/DefaultEthereumMethods.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/DefaultEthereumMethods.kt index 45067a48..6f78cfe0 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/DefaultEthereumMethods.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/DefaultEthereumMethods.kt @@ -75,6 +75,7 @@ class DefaultEthereumMethods( "eth_newFilter", "eth_newBlockFilter", "eth_newPendingTransactionFilter", + "eth_uninstallFilter" ) private val allowedMethods = anyResponseMethods + firstValueMethods + specialMethods + headVerifiedMethods + filterMethods diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/EthereumCallSelector.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/EthereumCallSelector.kt index 79748acf..abf684de 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/EthereumCallSelector.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/calls/EthereumCallSelector.kt @@ -57,7 +57,7 @@ class EthereumCallSelector( return blockTagSelector(params, 1, head) } else if (method == "eth_getStorageAt") { return blockTagSelector(params, 2, head) - } else if (method == "eth_getFilterChanges") { + } else if (method == "eth_getFilterChanges" || method == "eth_uninstallFilter") { return sameUpstreamMatcher(params) } return Mono.empty()