diff --git a/src/main/kotlin/io/emeraldpay/dshackle/rpc/SubscribeNodeStatus.kt b/src/main/kotlin/io/emeraldpay/dshackle/rpc/SubscribeNodeStatus.kt index 93013e66..c746fe2e 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/rpc/SubscribeNodeStatus.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/rpc/SubscribeNodeStatus.kt @@ -119,9 +119,11 @@ class SubscribeNodeStatus( val statuses = upstream.observeStatus() .distinctUntilChanged() - .takeUntil { it == UpstreamAvailability.UNAVAILABLE } + .takeUntil { + it == UpstreamAvailability.UNAVAILABLE && !upstream.isGrpc() + } .map { - if (it == UpstreamAvailability.UNAVAILABLE) { + if (it == UpstreamAvailability.UNAVAILABLE && !upstream.isGrpc()) { onUnavailable.accept(upstream.getId()) // cancel head subscription & reconnections when upstream becomes unavailable cancel.tryEmitNext(true)