diff --git a/core/src/rpc_pubsub.rs b/core/src/rpc_pubsub.rs index d15aad0b8a..4c249566bf 100644 --- a/core/src/rpc_pubsub.rs +++ b/core/src/rpc_pubsub.rs @@ -619,6 +619,7 @@ mod tests { let received_slot = 1; rpc.subscriptions .notify_signatures_received((received_slot, vec![tx.signatures[0]])); + // Test signature confirmation notification let (response, _) = robust_poll_or_panic(receiver); let expected_res = @@ -635,6 +636,39 @@ mod tests { } }); assert_eq!(serde_json::to_string(&expected).unwrap(), response); + + // Test "received" for gossip subscription + let session = create_session(); + let (subscriber, _id_receiver, receiver) = Subscriber::new_test("signatureNotification"); + rpc.signature_subscribe( + session, + subscriber, + tx.signatures[0].to_string(), + Some(RpcSignatureSubscribeConfig { + commitment: Some(CommitmentConfig::confirmed()), + enable_received_notification: Some(true), + }), + ); + let received_slot = 2; + rpc.subscriptions + .notify_signatures_received((received_slot, vec![tx.signatures[0]])); + + // Test signature confirmation notification + let (response, _) = robust_poll_or_panic(receiver); + let expected_res = + RpcSignatureResult::ReceivedSignature(ReceivedSignatureResult::ReceivedSignature); + let expected = json!({ + "jsonrpc": "2.0", + "method": "signatureNotification", + "params": { + "result": { + "context": { "slot": received_slot }, + "value": expected_res, + }, + "subscription": 2, + } + }); + assert_eq!(serde_json::to_string(&expected).unwrap(), response); } #[test] diff --git a/core/src/rpc_subscriptions.rs b/core/src/rpc_subscriptions.rs index 7c638d8975..3009999058 100644 --- a/core/src/rpc_subscriptions.rs +++ b/core/src/rpc_subscriptions.rs @@ -1064,11 +1064,16 @@ impl RpcSubscriptions { ); } NotificationEntry::SignaturesReceived(slot_signatures) => { + RpcSubscriptions::process_signatures_received( + &slot_signatures, + &subscriptions.gossip_signature_subscriptions, + ¬ifier, + ); RpcSubscriptions::process_signatures_received( &slot_signatures, &subscriptions.signature_subscriptions, ¬ifier, - ) + ); } }, Err(RecvTimeoutError::Timeout) => {