From 92128506009678323db16c163dddb3cc79345512 Mon Sep 17 00:00:00 2001 From: aniketfuryrocks Date: Wed, 8 Feb 2023 03:38:09 +0530 Subject: [PATCH] fix: signature subscribe with commitment --- src/bridge.rs | 5 +++-- src/workers/block_listenser.rs | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/bridge.rs b/src/bridge.rs index 8b5e9cad..14094024 100644 --- a/src/bridge.rs +++ b/src/bridge.rs @@ -390,11 +390,12 @@ impl LiteRpcServer for LiteBridge { &self, mut sink: SubscriptionSink, signature: String, - _commitment_config: CommitmentConfig, + commitment_config: CommitmentConfig, ) -> SubscriptionResult { RPC_SIGNATURE_SUBSCRIBE.inc(); sink.accept()?; - self.block_listner.signature_subscribe(signature, sink); + self.block_listner + .signature_subscribe(signature, commitment_config, sink); Ok(()) } } diff --git a/src/workers/block_listenser.rs b/src/workers/block_listenser.rs index 46b4db1b..ef06f58a 100644 --- a/src/workers/block_listenser.rs +++ b/src/workers/block_listenser.rs @@ -63,7 +63,7 @@ pub struct BlockListener { tx_sender: TxSender, block_store: BlockStore, rpc_client: Arc, - pub signature_subscribers: Arc>, + pub signature_subscribers: Arc>, } #[derive(Clone, Debug)] @@ -97,12 +97,20 @@ impl BlockListener { num_of_sigs_commited } - pub fn signature_subscribe(&self, signature: String, sink: SubscriptionSink) { - let _ = self.signature_subscribers.insert(signature, sink); + pub fn signature_subscribe( + &self, + signature: String, + commitment_config: CommitmentConfig, + sink: SubscriptionSink, + ) { + let _ = self + .signature_subscribers + .insert((signature, commitment_config), sink); } - pub fn signature_un_subscribe(&self, signature: String) { - self.signature_subscribers.remove(&signature); + pub fn signature_un_subscribe(&self, signature: String, commitment_config: CommitmentConfig) { + self.signature_subscribers + .remove(&(signature, commitment_config)); } fn increment_invalid_block_metric(commitment_config: CommitmentConfig) { @@ -253,7 +261,9 @@ impl BlockListener { }; // subscribers - if let Some((_sig, mut sink)) = self.signature_subscribers.remove(&sig) { + if let Some((_sig, mut sink)) = + self.signature_subscribers.remove(&(sig, commitment_config)) + { // none if transaction succeeded sink.send(&RpcResponse { context: RpcResponseContext {