From 283bb84134c3b547362300249b45752b8878b4a3 Mon Sep 17 00:00:00 2001 From: Pankaj Garg Date: Wed, 6 Mar 2019 20:01:21 +0000 Subject: [PATCH] Create UDP socket once per process_loop for forwarding transactions --- core/src/banking_stage.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index da1d2254b4..fc9aa67467 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -74,10 +74,10 @@ impl BankingStage { } fn forward_unprocessed_packets( + socket: &std::net::UdpSocket, tpu: &std::net::SocketAddr, unprocessed_packets: UnprocessedPackets, ) -> std::io::Result<()> { - let socket = UdpSocket::bind("0.0.0.0:0")?; for (packets, start_index) in unprocessed_packets { let packets = packets.read().unwrap(); for packet in packets.packets.iter().skip(start_index) { @@ -92,12 +92,13 @@ impl BankingStage { poh_recorder: &Arc>, cluster_info: &Arc>, ) { + let socket = UdpSocket::bind("0.0.0.0:0").unwrap(); loop { match Self::process_packets(&verified_receiver, &poh_recorder) { Err(Error::RecvTimeoutError(RecvTimeoutError::Timeout)) => (), Ok(unprocessed_packets) => { if let Some(leader) = cluster_info.read().unwrap().leader_data() { - let _ = Self::forward_unprocessed_packets(&leader.tpu, unprocessed_packets); + let _ = Self::forward_unprocessed_packets(&socket, &leader.tpu, unprocessed_packets); } } Err(err) => {