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 {
let transactions_socket_pair = udp_public_bind("transactions");
let requests_socket_pair = udp_public_bind("requests");
let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
requests_socket_pair
.receiver
requests_socket
.set_read_timeout(Some(Duration::new(1, 0)))
.unwrap();
ThinClient::new(
r.requests_addr,
requests_socket_pair.sender,
requests_socket_pair.receiver,
requests_socket,
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::drone::DroneRequest;
use solana::mint::Mint;
use solana::nat::udp_public_bind;
use solana::signature::{PublicKey, Signature};
use solana::thin_client::ThinClient;
use std::error;
@ -20,7 +19,7 @@ use std::fmt;
use std::fs::File;
use std::io;
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::thread::sleep;
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> {
let transactions_socket_pair = udp_public_bind("transactions");
let requests_socket_pair = udp_public_bind("requests");
requests_socket_pair
.receiver
let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
requests_socket
.set_read_timeout(Some(Duration::new(1, 0)))
.unwrap();
Ok(ThinClient::new(
r.requests_addr,
requests_socket_pair.sender,
requests_socket_pair.receiver,
requests_socket,
r.transactions_addr,
transactions_socket_pair.sender,
transactions_socket,
))
}

View File

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

View File

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

View File

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