Undo UPnP UDP port binding

This commit is contained in:
Michael Vines 2018-07-02 13:43:33 -07:00 committed by Grimes
parent 1d8bb5144e
commit 3e0e09555a
5 changed files with 19 additions and 33 deletions

View File

@ -301,20 +301,18 @@ fn main() {
} }
fn mk_client(r: &ReplicatedData) -> ThinClient { fn mk_client(r: &ReplicatedData) -> ThinClient {
let transactions_socket_pair = udp_public_bind("transactions"); let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let requests_socket_pair = udp_public_bind("requests"); let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
requests_socket_pair requests_socket
.receiver
.set_read_timeout(Some(Duration::new(1, 0))) .set_read_timeout(Some(Duration::new(1, 0)))
.unwrap(); .unwrap();
ThinClient::new( ThinClient::new(
r.requests_addr, r.requests_addr,
requests_socket_pair.sender, requests_socket,
requests_socket_pair.receiver,
r.transactions_addr, r.transactions_addr,
transactions_socket_pair.sender, transactions_socket,
) )
} }

View File

@ -12,7 +12,6 @@ use clap::{App, Arg, SubCommand};
use solana::crdt::ReplicatedData; use solana::crdt::ReplicatedData;
use solana::drone::DroneRequest; use solana::drone::DroneRequest;
use solana::mint::Mint; use solana::mint::Mint;
use solana::nat::udp_public_bind;
use solana::signature::{PublicKey, Signature}; use solana::signature::{PublicKey, Signature};
use solana::thin_client::ThinClient; use solana::thin_client::ThinClient;
use std::error; use std::error;
@ -20,7 +19,7 @@ use std::fmt;
use std::fs::File; use std::fs::File;
use std::io; use std::io;
use std::io::prelude::*; use std::io::prelude::*;
use std::net::{IpAddr, Ipv4Addr, SocketAddr, TcpStream}; use std::net::{IpAddr, Ipv4Addr, SocketAddr, TcpStream, UdpSocket};
use std::process::exit; use std::process::exit;
use std::thread::sleep; use std::thread::sleep;
use std::time::Duration; use std::time::Duration;
@ -288,19 +287,17 @@ fn read_mint(path: String) -> Result<Mint, Box<error::Error>> {
} }
fn mk_client(r: &ReplicatedData) -> io::Result<ThinClient> { fn mk_client(r: &ReplicatedData) -> io::Result<ThinClient> {
let transactions_socket_pair = udp_public_bind("transactions"); let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let requests_socket_pair = udp_public_bind("requests"); let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
requests_socket_pair requests_socket
.receiver
.set_read_timeout(Some(Duration::new(1, 0))) .set_read_timeout(Some(Duration::new(1, 0)))
.unwrap(); .unwrap();
Ok(ThinClient::new( Ok(ThinClient::new(
r.requests_addr, r.requests_addr,
requests_socket_pair.sender, requests_socket,
requests_socket_pair.receiver,
r.transactions_addr, r.transactions_addr,
transactions_socket_pair.sender, transactions_socket,
)) ))
} }

View File

@ -99,7 +99,6 @@ impl Drone {
let mut client = ThinClient::new( let mut client = ThinClient::new(
self.requests_addr, self.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
self.transactions_addr, self.transactions_addr,
transactions_socket, transactions_socket,
@ -293,7 +292,6 @@ mod tests {
let mut client = ThinClient::new( let mut client = ThinClient::new(
leader.data.requests_addr, leader.data.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
leader.data.transactions_addr, leader.data.transactions_addr,
transactions_socket, transactions_socket,

View File

@ -15,8 +15,7 @@ use transaction::Transaction;
/// An object for querying and sending transactions to the network. /// An object for querying and sending transactions to the network.
pub struct ThinClient { pub struct ThinClient {
requests_addr: SocketAddr, requests_addr: SocketAddr,
requests_sender: UdpSocket, requests_socket: UdpSocket,
requests_receiver: UdpSocket,
transactions_addr: SocketAddr, transactions_addr: SocketAddr,
transactions_socket: UdpSocket, transactions_socket: UdpSocket,
last_id: Option<Hash>, last_id: Option<Hash>,
@ -31,15 +30,13 @@ impl ThinClient {
/// to a public address before invoking ThinClient methods. /// to a public address before invoking ThinClient methods.
pub fn new( pub fn new(
requests_addr: SocketAddr, requests_addr: SocketAddr,
requests_sender: UdpSocket, requests_socket: UdpSocket,
requests_receiver: UdpSocket,
transactions_addr: SocketAddr, transactions_addr: SocketAddr,
transactions_socket: UdpSocket, transactions_socket: UdpSocket,
) -> Self { ) -> Self {
let client = ThinClient { let client = ThinClient {
requests_addr, requests_addr,
requests_sender, requests_socket,
requests_receiver,
transactions_addr, transactions_addr,
transactions_socket, transactions_socket,
last_id: None, last_id: None,
@ -53,7 +50,7 @@ impl ThinClient {
pub fn recv_response(&self) -> io::Result<Response> { pub fn recv_response(&self) -> io::Result<Response> {
let mut buf = vec![0u8; 1024]; let mut buf = vec![0u8; 1024];
trace!("start recv_from"); trace!("start recv_from");
self.requests_receiver.recv_from(&mut buf)?; self.requests_socket.recv_from(&mut buf)?;
trace!("end recv_from"); trace!("end recv_from");
let resp = deserialize(&buf).expect("deserialize balance in thin_client"); let resp = deserialize(&buf).expect("deserialize balance in thin_client");
Ok(resp) Ok(resp)
@ -115,7 +112,7 @@ impl ThinClient {
trace!("get_balance"); trace!("get_balance");
let req = Request::GetBalance { key: *pubkey }; let req = Request::GetBalance { key: *pubkey };
let data = serialize(&req).expect("serialize GetBalance in pub fn get_balance"); let data = serialize(&req).expect("serialize GetBalance in pub fn get_balance");
self.requests_sender self.requests_socket
.send_to(&data, &self.requests_addr) .send_to(&data, &self.requests_addr)
.expect("buffer error in pub fn get_balance"); .expect("buffer error in pub fn get_balance");
let mut done = false; let mut done = false;
@ -139,7 +136,7 @@ impl ThinClient {
serialize(&req).expect("serialize GetTransactionCount in pub fn transaction_count"); serialize(&req).expect("serialize GetTransactionCount in pub fn transaction_count");
let mut done = false; let mut done = false;
while !done { while !done {
self.requests_sender self.requests_socket
.send_to(&data, &self.requests_addr) .send_to(&data, &self.requests_addr)
.expect("buffer error in pub fn transaction_count"); .expect("buffer error in pub fn transaction_count");
@ -163,7 +160,7 @@ impl ThinClient {
let mut done = false; let mut done = false;
while !done { while !done {
debug!("get_last_id send_to {}", &self.requests_addr); debug!("get_last_id send_to {}", &self.requests_addr);
self.requests_sender self.requests_socket
.send_to(&data, &self.requests_addr) .send_to(&data, &self.requests_addr)
.expect("buffer error in pub fn get_last_id"); .expect("buffer error in pub fn get_last_id");
@ -205,7 +202,7 @@ impl ThinClient {
let data = serialize(&req).expect("serialize GetSignature in pub fn check_signature"); let data = serialize(&req).expect("serialize GetSignature in pub fn check_signature");
let mut done = false; let mut done = false;
while !done { while !done {
self.requests_sender self.requests_socket
.send_to(&data, &self.requests_addr) .send_to(&data, &self.requests_addr)
.expect("buffer error in pub fn get_last_id"); .expect("buffer error in pub fn get_last_id");
@ -267,7 +264,6 @@ mod tests {
let mut client = ThinClient::new( let mut client = ThinClient::new(
leader.data.requests_addr, leader.data.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
leader.data.transactions_addr, leader.data.transactions_addr,
transactions_socket, transactions_socket,
@ -315,7 +311,6 @@ mod tests {
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let mut client = ThinClient::new( let mut client = ThinClient::new(
leader.data.requests_addr, leader.data.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
leader.data.transactions_addr, leader.data.transactions_addr,
transactions_socket, transactions_socket,
@ -374,7 +369,6 @@ mod tests {
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let mut client = ThinClient::new( let mut client = ThinClient::new(
leader.data.requests_addr, leader.data.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
leader.data.transactions_addr, leader.data.transactions_addr,
transactions_socket, transactions_socket,

View File

@ -246,7 +246,6 @@ fn mk_client(leader: &ReplicatedData) -> ThinClient {
ThinClient::new( ThinClient::new(
leader.requests_addr, leader.requests_addr,
requests_socket.try_clone().unwrap(),
requests_socket, requests_socket,
leader.transactions_addr, leader.transactions_addr,
transactions_socket, transactions_socket,